如何正确覆盖 `toString()` 以摆脱哈希码
How to override `toString()` properly to get rid of hash code
我正在从 Room
中检索测试数据,但我得到的只是哈希码数据,即使我在 @Entity
[=47] 中重写了 toString()
方法=].我怎么知道是否使用了覆盖方法?
我已经使用 Live-data
使用 database
、repository
、viewModel
和 view
正确设置了 Room
。从 onCreate 我有一个 observer
可以正确触发,并显示数据。正如预期的那样,它是 has-code
数据。通常我通过覆盖 @Entity
class 中的 toString()
然后在 onCreate()
中使用它来将其转换为 string
数据,但它不起作用。它仍然给我 hash
数据。
在我的 @Entity
class 中,我像这样覆盖 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@a12e85e
我希望得到一些基本的测试数据:
"MY FIRST OBJECT", "THIS IS MY OBJECT", 1
您正在 ComputableLiveData
呼叫 toString()
,
您必须在 myEntities
上调用 toString()
,这将依次在 MyEntity
.
的各个元素上调用 toString()
myViewModel.getAllData().observe( this, new Observer<List<MyEntity>>() {
@Override
public void onChanged(@Nullable List<MyEntity> myEntities) {
Log.d("TAG: ", "DATA CHANGED! " + myEntities.toString());
}
});
我正在从 Room
中检索测试数据,但我得到的只是哈希码数据,即使我在 @Entity
[=47] 中重写了 toString()
方法=].我怎么知道是否使用了覆盖方法?
我已经使用 Live-data
使用 database
、repository
、viewModel
和 view
正确设置了 Room
。从 onCreate 我有一个 observer
可以正确触发,并显示数据。正如预期的那样,它是 has-code
数据。通常我通过覆盖 @Entity
class 中的 toString()
然后在 onCreate()
中使用它来将其转换为 string
数据,但它不起作用。它仍然给我 hash
数据。
在我的 @Entity
class 中,我像这样覆盖 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@a12e85e
我希望得到一些基本的测试数据:
"MY FIRST OBJECT", "THIS IS MY OBJECT", 1
您正在 ComputableLiveData
呼叫 toString()
,
您必须在 myEntities
上调用 toString()
,这将依次在 MyEntity
.
toString()
myViewModel.getAllData().observe( this, new Observer<List<MyEntity>>() {
@Override
public void onChanged(@Nullable List<MyEntity> myEntities) {
Log.d("TAG: ", "DATA CHANGED! " + myEntities.toString());
}
});