我打算將Java轉成Kotlin實作同樣功能。如下面代碼所示,Java代碼創建了2個構造器初始化不同屬性。
但是,Kotlin使用資料類的時候,無法實作同樣的功能。
初始化只能是2種,不能有第3種:
Table(date,time,price)或Table(date,priceBBB)
現在Kotlin代碼多出了1種:Table(date)
主要問題:現在Kotlin代碼多了一個構造器,麻煩就出現在這個多出來的主構造器,該構造器是不允許存在的。
但我看了資料,似乎data類必須有帶引數的構造器。雖然我可以使用普通類實作和Java一樣的代碼,但這個類確實是個data類。
請問如何解決?難道這是Kotlin語言的邏輯缺少嗎?
Java:
class Table {
private String mDate;
private String mTime;
private double mPrice;
private double mPriceBBBBBB;
Table(String date, String time, double price) {
mDate = date;
mTime = time;
mPrice = price;
}
Table(String date, double priceBBBBBB) {
mDate = date;
mPriceBBBBBB = priceBBBBBB;
}
}
Kotlin:
data class Table(var date: String) {
private var time: String? = null
private var price = 0.0
private var priceBBBBBB = 0.0
constructor(date: String, time: String?, price: Double):this(date) {
this.time = time
this.price = price
}
constructor(date: String, priceBBBBBB: Double) :this(date){
this.priceBBBBBB = priceBBBBBB
}
}
uj5u.com熱心網友回復:
kotlin可以有默認引數,沒必要多載構造方法uj5u.com熱心網友回復:
而且屬性不寫在主構造,就不是資料欄位,所以最好一個構造就夠了而且不明白你么這么設計資料類的意義
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/280408.html
標籤:Android
