如何加载从现有类继承的自定义类?

时间:2010-10-06 11:20:09

标签: java

我正在尝试使用此类的名称创建类的对象:

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>

这里有什么问题?

1 个答案:

答案 0 :(得分:5)

由于c扩展Foo 的某个类,因此您应该使用<? extends ...>语法在代码中表达它:

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