学堂 学堂 学堂公众号手机端

java语言基础(70)——集合框架(泛型高级之通配符)

lewis 1年前 (2024-04-23) 阅读数 19 #技术


泛型通配符

<?>


任意类型

? extends E

向下限定,E及其子类

? super E

向上限定,E及其父类

使用方法:


package FanXingDemo;

import java.util.ArrayList;
import java.util.Collection;

class FanXingDemo{
public static void main(String[] args){

// 如果明确了类型 那么前后须类型一致
Collection<Object> c = new ArrayList<Object>();
// 以下用法报错
//Collection<Object> c1 = new ArrayList<Animal>();
//Collection<Object> c2 = new ArrayList<Dog>();
//Collection<Object> c3 = new ArrayList<Cat>();
// end

// 泛型通配符 <?> 用法
// <?> 代表任意类型 以下用法都正确
Collection<?> c4 = new ArrayList<Object>();
Collection<?> c5 = new ArrayList<Animal>();
Collection<?> c6 = new ArrayList<Dog>();
Collection<?> c7 = new ArrayList<Cat>();
// end

// 泛型通配符 <? extends E> 用法
// 向下限定 E 和 E 的子类可以
// Collection<? extends Animal> c8 = new ArrayList<Object>();
Collection<? extends Animal> c9 = new ArrayList<Animal>();
Collection<? extends Animal> c10 = new ArrayList<Dog>();
Collection<? extends Animal> c11 = new ArrayList<Cat>();

// 泛型通配符 <? super E> 用法
// 向上限定 E 和 E 的父类可以
Collection<? super Animal> c12 = new ArrayList<Object>();
Collection<? super Animal> c13 = new ArrayList<Animal>();
//Collection<? super Animal> c14 = new ArrayList<Dog>();
//Collection<? super Animal> c15 = new ArrayList<Cat>();

}
}
class Animal{

}
class Dog extends Animal{

}
class Cat extends Animal{

}






版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门