簡體   English   中英

Java遞歸泛型類通配符匹配

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM