You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Java代码中的super()构造器调用转换为对应Swift语法

问题解答

正确Swift实现代码

public class BFactory : CompositeFactory {
     // 先修正入参类型:Java byte[]对应Swift的[UInt8](字节数组)
     init(input: [UInt8]) {
        // 调用父类构造器,需匹配父类构造器的参数标签
        super.init(input: input, maxSize: CompositeFactory.MAX_SIZE)
     }
}

关键说明

  • 你原Swift代码的构造器入参类型有误:Java中的byte[]是字节数组,对应Swift的[UInt8]类型,你写的UInt8是单个字节类型,和原Java逻辑不匹配,需先调整。
  • Swift中调用父类构造器的规则:子类的指定构造器完成自身所有存储属性的初始化工作后,必须显式调用父类的指定构造器,格式为super.init(参数标签: 参数值),参数标签需要和父类CompositeFactory的构造器定义完全匹配:
    • 如果父类构造器定义为init(input: [UInt8], maxSize: Int),直接使用上面给出的写法即可
    • 如果父类构造器定义时省略了外部参数标签(比如init(_ input: [UInt8], _ maxSize: Int)),则可以直接写super.init(input, CompositeFactory.MAX_SIZE),和你注释里的写法逻辑一致。

内容的提问来源于stack exchange,提问作者hasan kaleli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:39:03