Java强制Object :: toString

时间:2019-05-27 22:48:44

标签: java

对此问题的评论之一提到了这一点: Force invocation of base class method 想知道是否有一种强制Object.toString而不是MyClass.toString的方法。只是想用它来调试日志(想看看一个库是在创建多个对象还是在重复使用同一对象)。例如像

myObject.Object::toString()

这可以轻松完成吗?我们正在使用java8

2 个答案:

答案 0 :(得分:9)

不,这不容易完成。但是没有必要。如果要使用默认的toString()方法输出的十六进制数字,请调用System.identityHashCode()

答案 1 :(得分:2)

不,据我所知,在Java中是不可能的。 但是,有一些解决方法:

解决方法1:

class MyObject {
   public String toString() {
       return super.toString() + <whatever_of_my_object>;
   }
}

解决方法2:

class MyObject {

      public String toIdentityString() { // this is your custom function you can call it foo 
           return super.toString();
      }
}

然后使用toIdentityString打印对象的ID