我想做Java中的以下內容:Java的動態實現抽象方法
我有一個字符串(任何地方1和10 000)的集合,每個字符串包含不同的方法體(都寫在Java代碼中)爲同一個類的抽象方法。 例如:
string1= "int a=1;"
string2="System.out.println(\"HelloWorld\");"
...
每個字符串可能是以下的抽象方法的實現:
abstract class FOO{
public abstract void doSomething();
}
對於每一個我想產生FOO的實例使用字符串。
我不太知道什麼是最好的方式去: 我在網上搜索,並用這些建議提出了:
- 使用Java編譯器6 API生成的.class文件和加載它們
- 使用字節碼操作庫像CGLIB,修改編譯代碼
是否有任何其他建議,因爲這些看起來有點複雜(至少我)......
感謝您的幫助
編輯:
我可能會去我的問題的錯誤的方式。下面是我最終想要實現:
我有代表在一棵樹上
public interface Node{
public <T> void process(T input);
/* ...其他方法不相關的我的問題... */ 一個節點的接口}
當您向節點提供T的實例時,它會執行某些操作(有些可能需要訪問節點的其他方法),並將其傳遞給子節點。
問題是(程序規範):程序從文本文件中讀取和構建節點,其中包括方法體(這些體在java中)。然後構建樹並返回它。
我覺得要做到這一點,我必須以某種方式爲文本文件中提供的每種方法生成Node的實現。我可能是錯的,而且有可能是一個更好的辦法...
還有其他**,甚至mo重複**選項。 Java不是一種解釋型語言,所以這不能輕易完成。 –
爲什麼你有多達10,000個方法體作爲文本?爲什麼不把它們作爲編譯代碼? –
這可能是一個合法的問題,但** ......我認爲真正的問題發生在包含代碼的「字符串集合」起源之前的某個時間軸上。 – phineas