Các lớp dữ liệu dường như là sự thay thế cho các POJO kiểu cũ trong Java. Nó là khá mong đợi rằng các lớp này sẽ cho phép thừa kế, nhưng tôi có thể thấy không có cách thuận tiện để mở rộng một lớp dữ liệu. Những gì tôi cần là một cái gì đó như thế này:Mở rộng lớp dữ liệu trong Kotlin
open data class Resource (var id: Long = 0, var location: String = "")
data class Book (var isbn: String) : Resource()
Đoạn mã trên không thành công do xung đột component1()
phương pháp. Việc để lại chú thích data
chỉ trong một lớp cũng không thực hiện công việc.
Có thể có một thành ngữ khác để mở rộng các lớp dữ liệu?
UPD: Tôi có thể chú thích chỉ lớp con của trẻ, nhưng data
chú thích chỉ xử lý các thuộc tính được khai báo trong hàm tạo. Đó là, tôi sẽ phải kê khai tài sản của cha mẹ tất cả open
và ghi đè lên chúng, mà là xấu xí:
open class Resource (open var id: Long = 0, open var location: String = "")
data class Book (
override var id: Long = 0,
override var location: String = "",
var isbn: String
) : Resource()
Component1 ??? – maaartinus
Kotlin ngầm tạo ra các phương thức 'componentN()' trả về giá trị của thuộc tính N-th. Xem tài liệu trên [Multi-Declarations] (http://kotlinlang.org/docs/reference/multi-declarations.html) – Dmitry
Để mở các thuộc tính, bạn cũng có thể tạo tài nguyên trừu tượng hoặc sử dụng trình biên dịch plugin. Kotlin nghiêm túc về nguyên tắc mở/đóng. –