Vaadin Table Object returns null,尽管它存在 - 修改 toString()?
Vaadin Table Object returns null, though it exists - modify toString()?
我使用 Vaadin table 对象,它运行良好(没有异常,在浏览器中看起来没问题)。
但是当我检查 != null
或简单地打印它以实际控制它时 returns null
而不是 ID/hashCode,尽管它已经初始化并且正在工作。
在test.java中:
Table table = new Table();
System.out.println("table: " + table);
控制台输出:
>> table: null
我发现,Vaadin Table class 将普通 Java 对象的 toString()
覆盖为一种对齐方式(此处默认为空)为此 table。所以它不是 return 正常情况下应该是的十六进制代码(至少我猜是这样!?)。
我的问题是:如何修复该行为,以便我可以编写适当的相似性测试和 != null
?
是否有不干扰 other/standard Java 对象代码的 hexCode 方法?
从tostring方法变成十六进制码是不正常的。 toString
方法是创建一个表示对象的字符串。如果你这样做:
if(table != null)
toString
方法不会被调用。 Java 仅检查变量中是否存在名为 "table" 的对象。如果你想检查 table 是否为空,你应该使用方法 isEmpty
。如果你想要一个对象的十六进制码,也就是hashcode,你应该使用这个方法: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()
你可以简单地使用 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);
我使用 Vaadin table 对象,它运行良好(没有异常,在浏览器中看起来没问题)。
但是当我检查 != null
或简单地打印它以实际控制它时 returns null
而不是 ID/hashCode,尽管它已经初始化并且正在工作。
在test.java中:
Table table = new Table();
System.out.println("table: " + table);
控制台输出:
>> table: null
我发现,Vaadin Table class 将普通 Java 对象的 toString()
覆盖为一种对齐方式(此处默认为空)为此 table。所以它不是 return 正常情况下应该是的十六进制代码(至少我猜是这样!?)。
我的问题是:如何修复该行为,以便我可以编写适当的相似性测试和 != null
?
是否有不干扰 other/standard Java 对象代码的 hexCode 方法?
从tostring方法变成十六进制码是不正常的。 toString
方法是创建一个表示对象的字符串。如果你这样做:
if(table != null)
toString
方法不会被调用。 Java 仅检查变量中是否存在名为 "table" 的对象。如果你想检查 table 是否为空,你应该使用方法 isEmpty
。如果你想要一个对象的十六进制码,也就是hashcode,你应该使用这个方法: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()
你可以简单地使用 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);