簡體   English   中英

如何覆蓋Java API中的類,從而使用反射更改其行為?

[英]How to override classes in the Java API, thus changing their behaviour using Reflection?

是否有可能重寫Exceptions類,從而將我自己的方法注入其中,從而改變其整體性能。 我相信我在某處讀到它可以使用自定義類加載器或某種反射技術來完成? 我認為它提到使用自定義類加載器加載您的自定義類,而不是加載默認的Java API類。 如果是這樣,怎么做,例如,在調用printStackTrace(e)時創建一個JOptionPane異常消息彈出窗口,該消息提醒用戶該異常消息。

java開頭的包中的類受JVM本身的保護,因此為了能夠更改這些包中的類,您需要的不只是其他類加載器。 您可以只使用System.setErr來設置自己的PrintStream,而該System.setErr會打開顯示該文本的警告框,而不是采用這種方式。 然后,這不僅包括對printStackTrace調用,而且還包括在STDERR上打印的所有內容。 如果調用來自Throwable或您要支持的其他類,而忽略其余部分,則可以通過檢查新創建的Exception的調用stacktrace來使用某些篩選。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM