如何在java中覆盖最终类的toString()

时间:2012-03-15 04:25:07

标签: java

在通过YourKit分析我的java程序时,yourkit报告了我的问题所在;

enter image description here

虽然我的程序很小,但我可以找到问题的地方,但我想覆盖Integer的toString()。这样你的软件包就可以打印出来了。

我该怎么做?

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

3 个答案:

答案 0 :(得分:2)

来自Java规范

Chapter.8 Classes - final classes

最终课程

  • 因为最终的类永远不会有任何子类,所以不会覆盖最终类的方法

Integer是最后一堂课

public final class Integer extends Number implements Comparable<Integer>

因此,您不允许覆盖Integer内的任何内容。

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

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

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

答案 1 :(得分:1)

YourKit可能允许您自定义其输出,但是您无法在Java中覆盖公共最终方法,尤其是对于核心API类(如java.lang.Integer)。

答案 2 :(得分:0)

Integer类是最终的。因此,您不能重载它,因为您只能通过创建一个继承父级的类来重载方法。

请参阅http://www.roseindia.net/javatutorials/final_methods.shtml