泛型:一般只是用来使用泛型
- **参数化类型,**jdk1.5新特性
- 当泛型指定成确切类型时后续只能操作对应的类型--泛型擦除(编译期进行类型的确定)
- 泛型的写法总共有三种写法:
- List<String> list1=new ArrayList<>();---->jdk1.7推荐写法
- List<String> list2=new ArrayList<String>();
- List list3=new ArrayList<String>();
泛型的上下限-定义类型数据的范围
- //定义方法来遍历所有元素类型是数值类型的集合对象
- //? 代表泛型可以指定的类--->相当于是占位符的存在形式
- //<? extends NUumber>---可以接受Number类以及子类
- //<? extends 类/接口>--->可以接收类以及子类/接口以及子接口
- //泛型的上限
- //<? super String>----可以接受string类以及父类
- //<? super 类/接口>--->可以接收类以及子类/接口以及子接口
- //泛型的下限
- 泛型没有向上造型和向下造型,泛型的存在仅仅是为了能够在做某项操作时筛选除一类的数据
代码:
public class GenericDemo2 {
public static void main(String[] ages){
//
List<Integer> list1=new ArrayList<>();
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4);
//
List<String> list2=new ArrayList<>();
list2.add("a");
list2.add("b");
list2.add("c");
list2.add("d");
//
List<List> list3=new ArrayList<>();
list3.add(list2);
list3.add(list1);
list3.add(list1);
list3.add(list2);
}
//只想获取元素类型是数值类型的数据
public static void m(List<? extends Number> list){
for(Object i:list){
System.out.println(i);
}
}
}