2012-03-15 71 views
0

在通过YourKit分析我的java程序时,yourkit向我报告问题出在哪里;如何在java中覆盖finalclass的toString()

enter image description here

虽然我的计划是小,我能找到的地方问题,但我想重写整数的的toString()。这样yourkit可以打印它。

我该怎么做?

*我有一些方法可以做到这一点。就像我在yourkit profiler的分配监视器上,或者当我初始化一个对象时,我只是调用toString()。所以我可以将它与yourkit报告相匹配。但我正在寻找一些好的解决方案。

+0

是'abcdefg'它真正的说,或者是你刚才做了?请发布完整的,真实的错误消息。 – 2012-03-15 04:27:03

+2

您无法覆盖任何最终课程的任何方法。 – 2012-03-15 04:27:08

+1

正如其他人所说,最终的类不能被定义覆盖。但是,'Integer.toString()'不会输出你显示的内容 - 它将整数值作为字符串输出。 – 2012-03-15 04:28:56

回答

1

YourKit可能允许您自定义其输出,但是您无法在Java中正确覆盖public final方法,特别是对于核心API类(如java.lang.Integer)。

2

从Java规范

Chapter.8 Classes - final classes

最后类

  • 因为final类,不具有任何的子类,final类的方法永远不会覆盖

和Integer是一个final类

public final class Integer extends Number implements Comparable<Integer> 

所以你不允许覆盖内部Integer什么。

但是,Integer已经覆盖了toString()方法,它将显示数字。

public String toString() { 
    return String.valueOf(value); 
} 

所以我相信有可能是与Yourkit如何显示Java对象

+0

1+供jls参考。 – Vishrant 2015-11-24 10:09:56