我正在使用Kotlin中的数据类来显著减少我本来需要编写的Java代码量。
然而,在我的一个Java类中,我不确定如何在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
}
}
但是我的IDE(Android Studio)在我的构造函数中调用fetchName(context)
的部分被用红色下划线标出。它显示以下消息:
在调用超类构造函数之前无法访问
fetchName
我应该如何解决这个问题?
data
。 - voddantoString
或equals
,对吧?所以如果你添加了data
,Kotlin版本实际上会做更多的事情。这并不是什么坏事,但需要注意一下 ;) - voddan