簡體   English   中英

如何防止使用任意方法,例如String.lastIndexOf()

[英]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.

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