在通过YourKit分析我的java程序时,yourkit向我报告问题出在哪里;如何在java中覆盖finalclass的toString()
虽然我的计划是小,我能找到的地方问题,但我想重写整数的的toString()。这样yourkit可以打印它。
我该怎么做?
*我有一些方法可以做到这一点。就像我在yourkit profiler的分配监视器上,或者当我初始化一个对象时,我只是调用toString()。所以我可以将它与yourkit报告相匹配。但我正在寻找一些好的解决方案。
在通过YourKit分析我的java程序时,yourkit向我报告问题出在哪里;如何在java中覆盖finalclass的toString()
虽然我的计划是小,我能找到的地方问题,但我想重写整数的的toString()。这样yourkit可以打印它。
我该怎么做?
*我有一些方法可以做到这一点。就像我在yourkit profiler的分配监视器上,或者当我初始化一个对象时,我只是调用toString()。所以我可以将它与yourkit报告相匹配。但我正在寻找一些好的解决方案。
YourKit可能允许您自定义其输出,但是您无法在Java中正确覆盖public final方法,特别是对于核心API类(如java.lang.Integer)。
Integer类是final。因此,您不能重载它,因为只能通过继承父类的方法来重载方法。
看到http://www.roseindia.net/javatutorials/final_methods.shtml
从Java规范
Chapter.8 Classes - final classes
最后类
和Integer是一个final类
public final class Integer extends Number implements Comparable<Integer>
所以你不允许覆盖内部Integer
什么。
但是,Integer已经覆盖了toString()
方法,它将显示数字。
public String toString() {
return String.valueOf(value);
}
所以我相信有可能是与Yourkit如何显示Java对象
1+供jls参考。 – Vishrant 2015-11-24 10:09:56
是'abcdefg'它真正的说,或者是你刚才做了?请发布完整的,真实的错误消息。 – 2012-03-15 04:27:03
您无法覆盖任何最终课程的任何方法。 – 2012-03-15 04:27:08
正如其他人所说,最终的类不能被定义覆盖。但是,'Integer.toString()'不会输出你显示的内容 - 它将整数值作为字符串输出。 – 2012-03-15 04:28:56