[英]Java recursive generics class wildcard matching
具有以下通用接口和類:
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<?>>
?
你不能 使用不安全的演員表。
Class<? extends TestIntf<?>> clz = (Class<? extends TestIntf<?>>) TestImpl.class;
或不使用內部泛型:
Class<? extends TestIntf> clz = TestImpl.class;
更新:關於注釋,您無能為力-必須更改注釋。 您不能讓類文字代表泛型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.