【发布时间】:2018-12-29 23:16:33
【问题描述】:
我正在从Room 检索测试数据,但我得到的只是哈希码数据,即使我在@Entity 类中覆盖了toString() 方法。我怎么知道是否使用了覆盖方法?
我已经使用Live-data 正确设置了Room 和database、repository、viewModel 和view。从 onCreate 我有一个正确触发的observer,并显示了数据。正如预期的那样,它是has-code 数据。通常我通过在@Entity 类中覆盖toString() 并将其转换为string 数据,然后在onCreate() 中使用它,但它不起作用。它仍然给我hash 数据。
在我的@Entity 类中,我像这样覆盖toString():
@Override
public String toString() {
return "MyEntity{" +
"id=" + id +
", title='" + title + '\'' +
", description='" + description + '\'' +
", priority=" + priority +
'}';
}
在我的onCreate() 中,我调用Interface 使用:
myViewModel.getAllData().observe( this, new Observer<List<MyEntity>>() {
@Override
public void onChanged(@Nullable List<MyEntity> myEntities) {
Log.d("TAG: ", "DATA CHANGED! " + myViewModel.getAllData().toString());
}
} );
但尽管使用了.toString(),我仍然只是得到哈希数据:
D/TAG:: DATA CHANGED! android.arch.lifecycle.ComputableLiveData$1@a12e85e
我期待一些基本的测试数据:
"MY FIRST OBJECT", "THIS IS MY OBJECT", 1
【问题讨论】:
-
toString方法在哪个类中?是ComputableLiveData的第一个内部类吗? -
你在 List 实例上调用 toString
-
@wardziniak 没关系。很明显,无论
List的实现是什么,它都使用toString来遍历元素,并在每个元素上调用toString。 -
@Dawood 在我的 Entity 类中,可以找到 Room 的注释变量。我已经将它放在以前的项目中,并且效果很好。 ComputableLiveData 不是我创建的类。老实说,我不知道那是什么...如果我应该提供更多代码,请告诉我。
-
@wardziniak,@Dawood,是的,在列表中使用
toString()应该不会造成问题。
标签: java android tostring android-room