簡體   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