对此问题的评论之一提到了这一点: Force invocation of base class method 想知道是否有一种强制Object.toString而不是MyClass.toString的方法。只是想用它来调试日志(想看看一个库是在创建多个对象还是在重复使用同一对象)。例如像
myObject.Object::toString()
这可以轻松完成吗?我们正在使用java8
答案 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