我想传递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 */ }
}

09-28 07:12