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()

toStringhashCode 的更多信息: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);