您应该使用,
Class<? extends SomeClass>因为这就是泛型的用途。
在调用时
Class.forName,检查它是否
SomeClass.class.isAssignableFrom为新类。否则,您应该抛出一个
IllegalArgumentException或
ClassCastException。
编辑:
或者,调用
asSubclass(SomeClass.class)将为您执行此操作。
例如:
public SomeClass instantiate(String name) throws ClassNotFoundException, InstantiationException, IllegalAccessException { Class<?> raw = Class.forName(name); //throws ClassCastException if wrong Class<? extends SomeClass> generic = raw.asSubclass(SomeClass.class); // do what you want with `generic` return generic.newInstance();}


