[英]How do I prevent the use of arbitrary methods, for example String.lastIndexOf()
我有一個場景,我想運行我無法控制的代碼。 我想阻止在該代碼中使用任意標准JDK方法(例如,我想阻止在任何String對象上使用lastIndexOf()方法)。
如果使用禁用方法,則應導致運行時異常。
我懷疑這可能是自定義類加載器,但我不知道如何處理這個問題。 我遇到的部分問題是String是一個無法擴展的最終類。
例:
//I control this code
int result = SomeClass.method("foo") //I don't control SomeClass
//A valid implementation of SomeClass.method()
int method(String in) {return 1;}
//An invalid implementation of SomeClass.method()
int method(String in) {return in.lastIndexOf("o");}
//the above should throw an error at run time when called from my code
我建議將Reflection作為一種解決方案,但你想要的是一種解決問題的方法,而不是技術解決方案。
你問題的領域可能比我們在這里討論的要大得多。
我記得寫過一個自定義的findbugs探測器,它尋找特定的方法調用。 在我的情況下,它也分析了它的參數,但看起來你的情況有點簡單。
或者,您可以使用ASM庫。
最天真的是,您可以使用javap和grep輸出來反匯編類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.