Vaadin表对象返回null,虽然它存在 - 修改toString()?

时间:2015-05-20 12:46:28

标签: java vaadin

我使用了一个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方法?

2 个答案:

答案 0 :(得分:1)

从tostring方法变为十六进制代码是不正常的。 toString方法是创建表示对象的String。如果你这样做:

if(table != null)

toString方法不会被调用。 Java仅检查变量中是否有一个名为" table"的变量。或不。如果要检查表是否为空,则应使用方法isEmpty。如果您需要对象的十六进制代码(称为哈希码),则应使用此方法: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()

答案 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);