2010-10-06 45 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