В первичных конструкторах вам нужно использовать var
или val
, если вы хотите, чтобы он был виден глобально (включая локальные методы класса / enum).В противном случае это только локально в инициализации.Подумайте об этом:
public GuideType (String type) {}
По сравнению с этим:
private String type;
public GuideType (String type) { this.type = type; }
// Getters and setters
Без var
или val
будет получено что-то примерно эквивалентное первому 1 .Вы также можете получить к нему доступ в блоке init
и в инициализации переменных уровня класса.Итак, чтобы использовать его в методе, добавьте val:
enum class GuideType(val type: String) { ... }
Поскольку переменная (вероятно) не будет изменена, она также должна быть val. You can, of course, use
var`.
Обратите внимание, что это относится к основным конструкторам.Вторичные конструкторы работают по-разному.
1: Kotlin также произведет кучу вещей с нулевой безопасностью, включая проверки @NotNull и null, но код все еще грубый эквивалент