gpt4 book ai didi

Java递归泛型类通配符匹配

转载 作者:行者123 更新时间:2023-12-01 19:23:54 28 4
gpt4 key购买 nike

拥有这些通用接口(interface)和类:

interface TestIntf<T extends TestIntf<T>> 
{
void test(T param);
}

class TestImpl<T extends TestIntf<T>> implements TestIntf<T>
{
@Override
public void test(T param) { System.out.println(param); }
}

这失败了:

Class<? extends TestIntf<?>> clz = TestImpl.class;

(类型不匹配:无法从 Class<TestImpl> 转换为 Class<? extends TestIntf<?>> )

为什么?如何正确提供 TestImpl的引用匹配的类 Class<? extends TestIntf<?>>

最佳答案

你不能。使用不安全的强制转换。

Class<? extends TestIntf<?>> clz = (Class<? extends TestIntf<?>>) TestImpl.class;

或者不使用内部泛型:

Class<? extends TestIntf> clz = TestImpl.class;

更新:当涉及注释时,您无能为力 - 必须更改注释。您不能让类文字代表泛型类型。

关于Java递归泛型类通配符匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2492222/

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