色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java集合泛型上限和下限

鄭雨菲1年前6瀏覽0評論

Java集合中的泛型是在1.5版本中引入的。在使用泛型時,我們可以使用“上限通配符”和“下限通配符”的方式來限制集合的類型。

下面是一個示例:

class Animal {
void eat() {
System.out.println("eating");
}
}
class Dog extends Animal {
void bark() {
System.out.println("barking");
}
}
class Cat extends Animal {
void meow() {
System.out.println("meowing");
}
}

假設我們有一個列表,需要存儲多種動物進去:

List<Animal> animals = new ArrayList<>();
animals.add(new Dog());
animals.add(new Cat());
animals.add(new Animal());

在這種情況下,我們可以使用“上限通配符”來限制列表的類型。通過將類型參數指定為“? extends Animal”,我們表示這個列表只能接受Animal類型或其子類型的實例:

List<? extends Animal> animals = new ArrayList<>();
animals.add(new Dog()); // compile error
animals.add(new Cat()); // compile error
animals.add(new Animal());

在上面的代碼中,我們無法將Dog或Cat類型的實例添加到animals列表中,因為它們并不是Animal類型或其子類型的實例。

現在假設我們有一個列表,需要存儲Dog類型的實例:

List<Dog> dogs = new ArrayList<>();
dogs.add(new Dog());
dogs.add(new Dog());

在這種情況下,我們可以使用“下限通配符”來限制列表的類型。通過將類型參數指定為“? super Dog”,我們表示這個列表只能接受Dog類型或其父類型的實例:

List<? super Dog> dogs = new ArrayList<>();
dogs.add(new Dog());
dogs.add(new Animal()); // compile error
dogs.add(new Object()); // compile error

在上面的代碼中,我們無法將Animal或Object類型的實例添加到dogs列表中,因為它們并不是Dog類型或其父類型的實例。