Java 如何通过基接口的泛型传递类对象?
所以我有以下方法:Java 如何通过基接口的泛型传递类对象?,java,generics,Java,Generics,所以我有以下方法: void doSomething(Class<MyInterface> klass) { } 为什么???如何在不向具有doSomething方法的类中添加泛型的情况下解决此问题 为什么 因为泛型不是协变的。即使MyInterface是MyClass的超级类型,Class也不是Class的超级类型 如何在不向具有doSomething方法的类中添加泛型的情况下解决此问题 将方法定义更改为: void doSomething(Class<? extends
void doSomething(Class<MyInterface> klass) { }
为什么???如何在不向具有doSomething方法的类中添加泛型的情况下解决此问题
为什么
因为泛型不是协变的。即使MyInterface
是MyClass
的超级类型,Class
也不是Class
的超级类型
如何在不向具有doSomething方法的类中添加泛型的情况下解决此问题
将方法定义更改为:
void doSomething(Class<? extends MyInterface> klass) { }
void doSomething(类您还可以执行以下操作:
<K extends MyInterface> void doSomething(Class<K> klass) { }
void doSomething(klass类){
然后,如果需要,可以在方法中使用泛型K
<K extends MyInterface> void doSomething(Class<K> klass) { }