繁体   English   中英

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

[英]How to override toString() of final class in java

通过YourKit对我的Java程序进行性能分析时,yourkit向我报告了问题出在哪里;

在此处输入图片说明

尽管我的程序很小,可以找到问题所在,但是我想覆盖Integer的toString()。 使您的工具包可以打印它。

我怎样才能做到这一点?

*我有一些方法可以做到。 就像我在yourkit探查器的分配监视器上一样,或者在初始化对象时只是调用toString()。 因此,我可以将其与yourkit报告匹配。 但是我正在寻找一些好的解决方案。

来自Java规范

第8章课程-期末课程

期末课程

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

而整数是最后一堂课

public final class Integer extends Number implements Comparable<Integer>

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

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

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

因此,我认为Yourkit如何显示Java对象可能与它有关

YourKit可能允许您自定义其输出,但是无法以Java适当的方式覆盖public final方法,尤其是对于核心API类(例如java.lang.Integer)。

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

参见http://www.roseindia.net/javatutorials/final_methods.shtml

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM