Các lớp dữ liệu dường như là sự thay thế cho các POJO lỗi thời trong Java. Điều khá mong đợi là các lớp này sẽ cho phép kế thừa, nhưng tôi có thể thấy không có cách nào 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:
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 vì đụng độ các component1()
phương thức. Để lại data
chú thích chỉ trong một trong các lớp cũng không thực hiện công việc.
Có lẽ có một thành ngữ khác để mở rộng các lớp dữ liệu?
CẬP NHẬT: Tôi có thể chỉ chú thích lớp con con, 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 khai báo tất cả các thuộc tính của cha mẹ open
và ghi đè lên chúng, điều này thật 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()
componentN()
trả về giá trị của thuộc tính N-th. Xem tài liệu về Đa tuyên bố