Kotlin中定义私有主构造函数与次级构造函数报错问题
Kotlin私有主构造函数语法错误排查
问题代码
class Test() private constructor { constructor(name: String): this() { println("test called constructor $name") } } fun main() { Test("hk") }
报错信息(中文翻译)
期望顶级声明
期望顶级声明
函数声明必须有名称
未解析的引用: constructor
未解析的引用: name
意外的类型规范
意外的标记(使用';'分隔同一行的表达式)
未解析的引用: name
错误原因
Kotlin中声明私有主构造函数的语法规则是:访问修饰符必须放在constructor关键字之前,而非主构造函数的括号之后。你原代码把private写在Test()括号后面,导致编译器无法正确识别主构造函数的结构,进而触发一系列语法解析错误。
修正后的代码
class Test private constructor() { constructor(name: String): this() { println("test called constructor $name") } } fun main() { Test("hk") }
修正后,private constructor()明确标记主构造函数为私有,次级构造函数通过this()调用私有主构造函数,符合Kotlin语法规范,可正常编译运行。
内容的提问来源于stack exchange,提问作者H.Jain
相关产品推荐
相关产品推荐

