2010-03-27 43 views

回答

11

我不這麼認爲 - 據我可以從語言規範來講,「超級」僅適用於通配符類型放在首位。通配符語法也建議你只能有一個通配符約束,太 - 所以你不能使用這樣的事情之一:

// Invalid 
void foo(List<? extends Foo super Bar> list) 

即使這兩個都還:

// Valid 
void foo(List<? extends Foo> list) 

// Valid 
void foo(List<? super Bar> list) 

由於在評論中指出,它可能有多個界 - 但僅限於類型參數和轉換表達式。例如:

// Valid 
<T extends Number & Comparable> void foo(List<T> list) 
+1

謝謝您的回答。我可以建議你添加一條評論,說代碼是無效的,這樣沒有人認爲(錯誤)它是有效的嗎? (例如,如果它出現在搜索引擎結果頁面中) – 2010-03-27 19:32:55

+0

@Hosam:會的。 – 2010-03-27 19:34:45

+0

要清楚,你*可以*有多個上限,例如'List <?擴展Number&Comparable>'。 – NateS 2017-07-20 01:09:10

5

Oracle's tutorial

注意:您可以指定一個上限通配符,也可以指定一個下限,但你不能同時指定

相關問題