根據Java泛型常見問題 http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeParameters.html#FAQ302 類型參數不能用這種方式在Java的泛型類型參數的正向參考
<A extends B, B> // error
向前引用,但它是確定有
<A extends List<B>, B> // ok
這兩個示例已通過最新的jdk 1.6.0_24
進行驗證。
我的問題是,在語言規範中,這是指定的,隱含的或可抵扣的(即如果它不真實,其他事情可能會炸燬)。我無法在任何地方找到它。
更新
在javac7,它是允許的。直觀地說,類型參數的順序並不重要;類型系統要求類型變量之間不存在循環依賴關係:<A extends B, B extends A>
。以前,這可以通過禁止前向引用來保證。顯然,javac 7被改進以放寬排序,同時檢測週期而不管排序。
所以看起來,這個規則是由java泛型傢伙熟知的,但他們忘了把它放在語言規範中。 – irreputable 2011-03-20 03:11:16