私はKotlinでデータクラスを使用して、それ以外の方法で記述しなければならないJavaコードの量を大幅に減らしています。Kotlinデータクラスのスーパークラスコンストラクタを呼び出す前の関数へのアクセス
しかし、私のJavaクラスの1つでは、私はKotlinで同じ結果を達成するために何をすべきか分かりません。私はKotlinでそれを書き換えることを試みてきたが、これまでのところ、私はこれを持って
public class DataObject {
private int mId;
private String mName;
public DataObject(int id, String name) {
mId = id;
mName = name;
}
public DataObject(Context context, int id) {
mId = id;
Cursor cursor = ...
cursor.moveToFirst();
mName = cursor.getString(...);
cursor.close();
}
public int getId() {
return mId;
}
public String getName() {
return mName;
}
}
:
data class DataObject(val id: Int, val name: String) {
constructor(context: Context, id: Int) : this(id, fetchName(context))
private fun fetchName(context: Context): String {
val cursor = ...
cursor.moveToFirst()
val name = cursor.getString(...)
cursor.close()
return name
}
}
しかし、私のIDE(アンドロイドメーカー
私のJavaクラスは、ビットのようになります
)私はfetchName(context)
私の
constructor
赤で部分を強調しています。それは、次のメッセージが表示されます。
は、スーパークラスのコンストラクタの前
fetchName
にアクセスすることはできませんどのように私はこの問題を解決する必要があります
と呼ばれてきましたか?
注 – voddan
@voddan私はそうのような別の
Factory
を使用したいです'データクラス'のように 'data'ですか?何故なの? –あなたの最初のJavaクラスは 'toString'または' equals'を持っていません、そうですか?したがって、 'data'を追加すれば、kotlinのバージョンはもっと多くなります。それについては何も悪いことではありませんが、何かを書き留めてください;) – voddan