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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:45:48