tôi là một nhà phát triển Java Android và tôi đang tiếp cận để KotlinAndroid Kotlin mở rộng siêu gọi
tôi đã xác định các lớp sau đây:
open class Player : RealmObject() {
...
}
Và tôi xác định hai phần mở rộng sau, một cho lớp RealmObject chung và một cho lớp Player cụ thể:
fun RealmObject.store() {
Realm.getDefaultInstance().use { realm ->
realm.beginTransaction()
realm.copyToRealmOrUpdate(this)
realm.commitTransaction()
}
}
fun Player.store(){
this.loggedAt = Date()
(this as RealmObject).store()
}
gì tôi muốn là nếu tôi gọi .store()
trên bất kỳ RealmObject
đối tượng, t anh ta RelamObject.store()
tiện ích mở rộng sẽ được gọi là NHƯNG nếu tôi gọi số .store()
trên một ví dụ Player
mà tiện ích sẽ được gọi là Player.store()
. (Không vấn đề gì bây giờ) Tôi không muốn sao chép dán cùng một mã, tôi thích viết ít sử dụng lại nhiều hơn. Vì vậy, tôi cần nội bộ số Player.store()
sẽ gọi cho số RealmObject.store()
mới nhất của tôi. Mã tôi đã viết lên đó được thực sự làm việc như mong đợi: D
gì tôi đang hỏi là (chỉ vì tôi đã viết rằng chỉ bằng cách đích thân trực giác):
Đây có phải là cách tốt ?! Hoặc có một số cách tốt hơn?
Cảm ơn bạn
Nếu mã hoạt động đúng và những gì bạn muốn là một xem xét mã hoặc cách tốt hơn để thực hiện tác vụ này, bạn nên truy cập [Đánh giá mã] (https://codereview.stackexchange.com/) và đăng sự nghi ngờ này lên đó. –