Удалил ли он мои сеттеры и геттеры, а затем изменил модификатор доступа моей переменной с приватного на публичный?
Да.
Если так, то почему
Он сгенерировал идиоматический Kotlin для вашего кода.
как это хорошо?
Idiomatic Kotlin - разумный выбор по умолчанию для переводчика кода в Kotlin.
Сеттеры и геттеры являются частью абстракции в Java. Котлин не заботится об этом?
Конечно, это так. Однако ваши существующие методы установки и получения ничего не делали, поэтому преобразование Kotlin удалило их, решив использовать уже существующие методы установки и получения по умолчанию.
Предположим, что вместо этого ваш код выглядел так:
private String apiKey;
public void setApiKey(String key) {
this.key = key.toUpperCase();
}
public String getApiKey() {
return key;
}
Здесь установщик обеспечивает, чтобы ключ API всегда был в верхнем регистре.
Эквивалент Kotlin будет:
var apiKey: String = "THE-DUDE-ABIDES"
set(value) { field = value.toUpperCase() }
Потребители вашего свойства apiKey
всегда используют методы получения и установки. Просто синтаксически Kotlin делает вызовы геттеров и сеттеров похожими на доступ к простому полю. Таким образом, пользователям apiKey
не нужно делать ничего другого, чтобы использовать переопределенный установщик (с вызовом toUpperCase()
) от установщика по умолчанию.