2010-10-06 85 views
0

我試圖創建一個類的對象,使用這個類的只是一個名字:如何加載從現有類繼承的自定義類?

public interface Foo { 
} 
public class Bar implements Foo { 
} 
[...] 
Class<Foo> c = Class.forName("com.XXX.Bar").asSubclass(Foo.class); 
Foo foo = c.newInstance(); 

編譯器說:

incompatible types found : 
java.lang.Class<capture#47 of ? extends com.XXX.Foo> 
required: java.lang.Class<com.XXX.Foo> 

有什麼不對嗎?

回答

5

由於c一些類延伸Foo,你應該使用<? extends ...>語法表達它的代碼:

Class<? extends Foo> c = Class.forName("com.XXX.Bar").asSubclass(Foo.class); 
+0

獎勵!這非常奏效。 – Sid 2010-10-06 12:11:24