我想传递Class
作为参数并返回此类的实例。我需要确保该类实现ISomeInterface
。我知道我可以通过反射来做到这一点:
Object get(Class theClass) {
return theClass.newInstance();
}
我不知道如何确保
theClass
实现ISomeInterface
ISomeInterface get(Class<? extends ISomeInterface> theClass) {...}
// errrr... you know what i mean?
我不喜欢生产中的反射,但是对于测试来说非常有用吗
有关:
Why is Class.newInstance() "evil"?
最佳答案
使用isAssignableFrom
。
ISomeInterface get(Class<? extends ISomeInterface> theClass) {
if (ISomeInterface.class.isAssignableFrom(theClass)) {
return theClass.newInstance();
} else { /* throw exception or whatever */ }
}