Java泛型类语法

时间:2015-04-04 16:40:32

标签: 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&amp;可以比较吗?

  3. 我认为泛型用于集合,而不是类, 那么,class coada如何具有类型参数?

2 个答案:

答案 0 :(得分:2)

  1. T extends Number & Comparable <Number> T扩展了Number并实现了Comparable

  2. 泛型不要求将类型作为集合。

答案 1 :(得分:1)

Comparable是一个接口,因此T可以扩展Number并同时实现Comparable<Number>(以及任意数量的其他接口)。

至于你的第二个问题,任何类都可以有类型参数,而不仅仅是Collection s。 coada < T extends Number & Comparable < Number>>表示类coada具有名为T的类型参数,该参数必须是NumberNumber的子类,并实现接口Comparable<Number>