たとえば、Java では、ゲッターを独自に記述したり (IDE によって生成)、lombok の @Getter のようなアノテーションを使用したりできます。これは非常に簡単です。
Kotlinはしかしデフォルトでゲッターとセッターしかし、使い方がわかりません。
たとえば、Java に似たものを作りたいとします。
private val isEmpty: String
get() = this.toString() //making this thing public rises an error: Getter visibility must be the same as property visibility.
では、ゲッターはどのように機能するのでしょうか?
ベストアンサー1
Kotlin ではゲッターとセッターが自動生成されます。次のように記述すると、
val isEmpty: Boolean
これは次の Java コードと同等です。
private final Boolean isEmpty;
public Boolean isEmpty() {
return isEmpty;
}
In your case the private access modifier is redundant - isEmpty is private by default and can be accessed only by a getter. When you try to get your object's isEmpty property you call the get method in real. For more understanding of getters/setters in Kotlin: the two code samples below are equal:
var someProperty: String = "defaultValue"
and
var someProperty: String = "defaultValue"
get() = field
set(value) { field = value }
Also I want to point out that this
in a getter is not your property - it's the class instance. If you want to get access to the field's value in a getter or setter you can use the reserved word field
for it:
val isEmpty: Boolean
get() = field
If you only want to have a get method in public access - you can write this code:
var isEmpty: Boolean
private set
due to the private modifier near the set accessor you can set this value only in methods inside your object.