2015-04-04 77 views
1

我知道我可以在java中創建一個類是這樣的:Java的泛型類的語法

public class test {/*some code*/} 

但現在我有這樣的:

public class coada < T extends Number & Comparable < Number>> { 
    List <T> pq = new ArrayList <T>(); 

    public void add(T e , List <T> c) { 
     c.add(e); 
     Collections.sort(c); 
    } 

    public void remove(List < ? extends Number> c) { 
     c.remove(0); 
    } 
} 

我不明白的更復雜的語法尖括號和參數列表。

我有以下問題:

  1. 有人能澄清該示例中使用的語法?

  2. 我知道Java不支持多繼承。 那麼Number &的比較可能?

  3. 我認爲泛型被用於集合,而不是類, 那麼,class coada如何有一個類型參數?

+2

推薦閱讀:[* Java(註冊商標)教程:課:泛型(更新)*](https://docs.oracle.com/javase/tutorial/java/generics/) – 2015-04-04 16:42:57

+1

你看「Comparable」是一個界面而不是一個類? – eduyayo 2015-04-04 16:44:33

+1

編輯你的問題,並選擇代碼,然後按ctrl-M不使用br – 2015-04-04 16:44:53

回答

1

Comparable是一個接口,所以T可以延伸Number並實施在同一時間Comparable<Number>(和任意數量的其他接口)。

至於你的第二個問題,任何類都可以有類型參數,不僅僅是Collection s。 coada < T extends Number & Comparable < Number>>表示類別coada具有稱爲T的類型參數,該類型參數必須是NumberNumber的子類並實現接口Comparable<Number>

+0

???接口實現不擴展,所以你仍然沒有解釋sintax擴展數字和可比較。這就是我問的問題......而且你也沒有解釋類coada是如何具有類型參數的....所以你想證明什麼?我是一個biginer。如果你不解釋清楚,只是不要請 – MyUserQuestion 2015-04-04 16:53:25

+0

@MyUserQuestion對不起,我錯過了你的第二個問題,只回答第一個問題。 – Eran 2015-04-04 17:00:53

2
  1. T extends Number & Comparable <Number> 牛逼延伸數,並實現可比

  2. 泛型不需要類型是一個集合。

+0

謝謝你的回答 – MyUserQuestion 2015-04-04 16:59:09