私は Kotlin でデータ クラスを使用して、それ以外の方法で作成する必要がある Java コードの量を大幅に削減しています。
しかし、私の Java クラスの 1 つで、Kotlin で同じ結果を得るために何をすればよいかわかりません。
私の Java クラスは次のようになります。
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;
}
}
Kotlinで書き直そうとしましたが、これまでのところ次のとおりです。
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
}
}
fetchName(context)
しかし、私の IDE (Android Studio) は、constructor
赤で呼び出す部分に下線を引いています。次のメッセージが表示されます。
fetchName
スーパークラス コンストラクターが呼び出される前にアクセスできません
この問題を解決するにはどうすればよいですか?