Пользовательский геттер для свойств параметров типа

У меня есть файл Java, немного похожий на это:

public class Thing { private String property; public Thing(String property) { this.property = property; } public String getProperty() { if (property == null) { return "blah blah blah"; } else { return property; } } } 

Очевидно, что мой фактический класс больше, но приведенный выше пример.

Я хочу написать это в Котлине, поэтому я начал с этого:

 class Thing(val property: String?) 

Затем я попытался реализовать пользовательский геттер, используя официальную документацию и другой вопрос Kotlin в качестве ссылки, например:

 class Thing(property: String?) { val property: String? = property get() = property ?: "blah blah blah" } 

Однако моя IDE (Android Studio) выделяет второе property на третьей строке приведенного выше кода красным цветом и дает мне сообщение:

Инициализатор здесь не разрешен, потому что свойство не имеет поля поддержки

Почему я получаю эту ошибку и как я могу написать этот пользовательский геттер, как описано выше?

Вам нужно использовать «поле» вместо «property» в теле вашего get() , чтобы объявить поле поддержки :

 class Thing(property: String?) { val property: String? = property get() = field ?: "blah blah blah" } 

Однако в этом конкретном примере вам может быть лучше с объявлением свойства, отличным от null:

 class Thing(property: String?) { val property: String = property ?: "blah blah blah" } 
  • Котлин, обращающийся к константе во внутреннем классе с Java
  • Как вводить IoC в функции верхнего уровня Kotlin? Я даже использую контейнеры IoC?
  • Не удается создать приложение Android (с Kotlin) с Gradle: «comand« java.exe »завершен с ненулевым значением выхода 1»
  • Как вы выполняете выборку api?
  • Kotlin: Невозможно импортировать по требованию из объекта
  • Использование функции по умолчанию для интерфейса в Kotlin
  • Обновить searchView при удалении андроида запроса
  • Тесты Kotlin не работают из командной строки с ClassNotFoundException, но работают с IntelliJ
  • Пользовательские представления Android с Kotlin
  • Может ли Kotlin или Swift разобрать JSON так же, как Javascript?
  • Воспроизведение только аудио 1, а не 2, 3 и 4
  • Давайте будем гением компьютера.