Создание частного конструктора и создание вторичного конструктора дает ошибку в kotlin

Ниже фрагмент кода дает ошибку. Может ли кто-нибудь объяснить, почему это происходит?

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

Я получаю эту ошибку: Ожидание объявления верхнего уровня Ожидание объявления верхнего уровня Объявление функции должно иметь имя Неразрешенная ссылка: конструктор Неразрешенная ссылка: имя Неожиданная спецификация типа Неожиданные токены (используйте ';' для разделения выражений в одной строке) Неразрешенная ссылка : имя

H.Jain 25.11.2022 11:57
1
1
54
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий
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")
  }
}

Другие вопросы по теме

Похожие вопросы

В чем разница между SavedStateHandle и RememberSaveable?
Автоматический перезапуск или режим выключения/включения на моем мобильном устройстве, автоматическое открытие приложения в React native
Свяжите несколько учетных записей пользователей (один и тот же адрес электронной почты) Firebase
Каково время ожидания по умолчанию для http-запросов с использованием библиотеки http dart?
В студии Android спецификаторы формата %s видны в моем тексте редактирования, и я не знаю, как их удалить
Как получитьItemCount() при использовании FirestoreRecyclerAdapter, потому что он всегда возвращает 0?
Повлияет ли выбор подписи приложения Google Play для загрузки AAB на существующих пользователей, которые уже установили APK из playstore?
Как обновить содержимое веб-просмотра (приложение для реагирования)?
X264 lib не собирается на Android, другие плагины не включены
SetState не обновляет пользовательский интерфейс, даже если переменная не объявлена ​​​​в методе сборки