[英]TextWatcher StringBuilder append method appends CharSequence to both StringBuilder objects
[英]Overriding append method in stringBuilder?
我對StringBuilder類中的append方法有疑問。 我被問到,當stringBuilder類是最終的時,我們如何覆蓋StringBuilder類中的append()方法。 相同的邏輯適用於在String類為final時覆蓋String類中的toString()嗎? 請幫我。
謝謝
不,您無法真正覆蓋final
方法,可能有些字節碼級別的魔術可以讓您做到這一點,但我不確定是否值得。
您可以創建一個包裝器類(類似於MyStringBuilder
並為StringBuilder
每個方法創建一個委托給StringBuilder
實例的方法,然后可以根據需要修改append
方法。 這種方法有一個問題,那就是您不能訪問StringBuilder
定義的private
變量,盡管這對於您的用例而言可能並不重要。 因人而異
聲明為final
的類無法擴展,因此無法覆蓋它的任何方法。
可以擴展未聲明為final
類,但不能重寫任何聲明為final
方法。
覆蓋String類中的toString覆蓋了java.lang.Object
中java.lang.String
的方法。 由於該類被聲明為final,因此您不能從該類派生,因此也不能覆蓋toString方法,這在String中是一種特殊情況,因為它返回String本身。
在最終類中重寫方法是不可能的。 而且append ()
不是Object中的方法,因此它們不是等效的,但是您也不能覆蓋append。
這些課程是最終設計的。 API設計人員不想處理使這些類成為繼承基類的額外復雜性。
除了繼承以外,還可以使用委托並創建自己的StringBuilder類,該類將java.lang.StringBuilder的實例用作委托。 這使得創建自己的append方法變得很簡單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.