我使用了一个Vaadin表对象,它运行良好(没有Exeptions,它在浏览器中看起来很好)。
但是当我检查!= null
或者只是将其打印到控制台时,它实际上会返回null
而不是ID / hashCode,尽管它已初始化并正常工作。
在test.java中:
Table table = new Table();
System.out.println("table: " + table);
控制台输出:
>> table: null
我发现,Vaadin Table类会将普通Java对象的toString()
覆盖为该表的一种alignemt(默认情况下为null)。因此它不会返回正常情况下的十六进制代码(至少我猜是这样!?)。
我的问题是:如何修复这种行为,以便我可以为相似性和!= null
编写适当的测试?
是否有一个不干扰其他/标准Java对象代码的hexCode方法?
答案 0 :(得分:1)
从tostring方法变为十六进制代码是不正常的。 toString
方法是创建表示对象的String。如果你这样做:
if(table != null)
toString
方法不会被调用。 Java仅检查变量中是否有一个名为" table"的变量。或不。如果要检查表是否为空,则应使用方法isEmpty
。如果您需要对象的十六进制代码(称为哈希码),则应使用此方法:hashCode()
toString
和hashCode
的更多信息:https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#hashCode()
https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#toString()
答案 1 :(得分:1)
您可以简单地使用Object.hashCode(),或者如果您确实需要使用toString,则可以覆盖它:
Table table = new Table(){
final Long hexcode = new java.util.Random().nextLong();
@Override
public String toString(){
return hexcode.toString();
}
};
System.out.println("table: " + table);