Java 在覆盖对象的toString()方法后,如何获取该对象的唯一id?

Java 在覆盖对象的toString()方法后,如何获取该对象的唯一id?,java,Java,我可以像你一样得到唯一的idclassName@2345通过调用对象的toString()方法,但在重写toString()方法后,如何获得唯一id?您可以调用System.identityHashCode()并将对象作为参数传递,然后您将获得它。如果您正在寻找一行toString()方法还将打印className@address,查看apachecommons。这将返回以下格式的字符串:className@address[field1=value1,field2=value2,…]更准确地说

我可以像你一样得到唯一的idclassName@2345通过调用对象的toString()方法,但在重写toString()方法后,如何获得唯一id?

您可以调用System.identityHashCode()并将对象作为参数传递,然后您将获得它。

如果您正在寻找一行toString()方法还将打印className@address,查看apachecommons。这将返回以下格式的字符串:className@address[field1=value1,field2=value2,…]

更准确地说

obj.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(obj))

大声呼喊并不是独一无二的。(抱歉)是的,它只是一个散列码,实际上不是唯一的。但在大多数情况下,我可以用它来区分对象。“在大多数情况下”只是定义概率,而不是你通常在软件中依赖的东西,除非你是在为赌博编写代码;-)或者只是公共字符串identityString(){return super.toString();}?