Ниже фрагмент кода дает ошибку. Может ли кто-нибудь объяснить, почему это происходит?
class Test() private constructor {
constructor(name: String): this() {
println("test called constructor $name")
}
}
fun main() {
Test("hk")
}
Удаление частного конструктора, это работает.
Я пытался решить это на своей стороне. но я не добился успеха.
Я получаю эту ошибку: Expecting a top level declaration Expecting a top level declaration Function declaration must have a name Unresolved reference: constructor Unresolved reference: name Unexpected type specification Unexpected tokens (use ';' to separate expressions on the same line) Unresolved reference: name
class Test private constructor() {
constructor(name: String): this() {
println("test called constructor $name")
}
}
fun main() {
Test("hk")
}
()
после Test
— это конструктор — это сокращение от Test constructor()
— думайте об этом как о специальной функции с именем constructor
.
Поэтому, если вы хотите сделать эту функцию приватной, вам нужно явно использовать имя constructor()
со скобками, а затем вы можете добавить private
перед ним.
class Test private constructor()
Подробнее здесь: https://kotlinlang.org/docs/classes.html#constructors
class Test{
private constructor(){}
constructor(name: String): this() {
println("test called constructor $name")
}
}
Я получаю эту ошибку: Ожидание объявления верхнего уровня Ожидание объявления верхнего уровня Объявление функции должно иметь имя Неразрешенная ссылка: конструктор Неразрешенная ссылка: имя Неожиданная спецификация типа Неожиданные токены (используйте ';' для разделения выражений в одной строке) Неразрешенная ссылка : имя