gpt4 book ai didi

java - 如何传递带有基接口(interface)泛型的 Class 对象?

转载 作者:行者123 更新时间:2023-12-02 18:05:36 26 4
gpt4 key购买 nike

所以我有以下方法:

void doSomething(Class<MyInterface> klass) { }

太棒了!现在我这样做:

class MyClass implements MyInterface { }

// now let's call the method
doSomething(MyClass.class); // DOES NOT COMPILE

为什么???如何在不向具有 doSomething 方法的类中添加泛型的情况下解决此问题?

最佳答案

Why ???

因为泛型不是协变的。即使MyInterfaceMyClass 的父类(super class)型, Class<MyInterface>不是 Class<MyClass> 的父类(super class)型.

How do I solve this without adding generics to the class that has the method doSomething?

将方法定义更改为:

void doSomething(Class<? extends MyInterface> klass) { }

关于java - 如何传递带有基接口(interface)泛型的 Class 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29830429/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com