我想創建一個類的對象,並重寫它的一些方法。例如:如何覆蓋用ClassLoader實例化的類的方法
Foo bar = new Foo(){
public void fighters(){
//some stuff
}
};
問題是:類的名稱存儲在字符串中。 我顯然此舉是爲了創建一個使用Constructor.newInstance(對象o)方法的新實例,就像這樣:
Class c = cl.loadClass("com.pom.Foo");
Foo f = (Foo) (c.getDeclaredConstructor(String.class).newInstance("Hello!"));
雖然這段代碼成功創建該類的一個新實例,我不知道如何重寫它的方法。
有什麼建議嗎?
爲什麼你不能只創建一個覆蓋方法,編譯它,並實例化這個類而不是Foo的類? –
Java是一種靜態編譯語言,你不能做這種事情。工作錯誤的工具。 – skaffman
@skaffman:這不太正確。你可以做運行時代碼注入(比如像BCEL這樣的東西)。 (不要說你應該,只要你可以。) – Mat