Getters và setters được tạo tự động trong Kotlin. Nếu bạn viết:
val isEmpty: Boolean
Nó bằng với mã Java sau:
private final Boolean isEmpty;
public Boolean isEmpty() {
return isEmpty;
}
Trong trường hợp của bạn, công cụ sửa đổi quyền truy cập riêng tư là dư thừa - isEmpty là riêng tư theo mặc định và chỉ có thể được truy cập bởi getter. Khi bạn cố gắng lấy thuộc tính isEmpty của đối tượng, bạn gọi phương thức get trong thực tế. Để hiểu thêm về getters / setters trong Kotlin: hai mẫu mã dưới đây bằng nhau:
var someProperty: String = "defaultValue"
và
var someProperty: String = "defaultValue"
get() = field
set(value) { field = value }
Ngoài ra, tôi muốn chỉ ra rằng this
trong getter không phải là tài sản của bạn - đó là thể hiện của lớp. Nếu bạn muốn có quyền truy cập vào giá trị của trường trong getter hoặc setter, bạn có thể sử dụng từ dành riêng field
cho nó:
val isEmpty: Boolean
get() = field
Nếu bạn chỉ muốn có một phương thức get trong quyền truy cập công khai - bạn có thể viết mã này:
var isEmpty: Boolean
private set
do công cụ sửa đổi riêng tư gần bộ truy cập đã đặt, bạn chỉ có thể đặt giá trị này trong các phương thức bên trong đối tượng của mình.
In your case the private access modifier is redundant
Làm sao? Kotlin doc's nói rằng công cụ sửa đổi mặc định là công khai. kotlinlang.org/docs/reference/visibility-modifiers.html