package com.Lucky;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
/**
* 泛型的应用场景:
* 1。如果我们在定义类/方法/接口的时候,类型不确定,可以定义为泛型类/泛型接口/泛型方法
* 2. 如果类型不确定,但是知道指定的范围,可以使用泛型的通配符?【进行类型范围的限定】
*
*
* 泛型类:在类名称的后面加上<数据类型>:例如 test<Integer>
* 泛型方法:在方法的修饰符的后面加上<数据类型>:例如 static<Integer>
* 泛型接口:在接口名称的后面加上<数据类型>:例如 Amail<Integer>
*/
/**
* 在泛型中不能写基本数据类型
* 泛型中的类型不能继承,但是数据可以继承
*/
/*
泛型的通配符:
? 表示不确定的数据类型,可以进行数据类型的限定
1. ? extends E :可以传递E类型或E类型的子类类型
2. ? super E :可以传递E类型或E类型的父类型
*/
/*
不用泛型时,存储数据
结论:没有给集合指定类型,会默认所有的数据类型都是Object类型
在此时可以往集合添加所有类型的数据
坏处:获取数据时,因为数据也是Object类型数据,所以无法使用数据的特定方法。
使用泛型: 可以在添加数据的时候将数据类型进行统一
获取数据时节省了强制转换的步骤
每天一个小知识:java中的泛型是伪泛型
*/
public class GenericsDemo {
public static void main(String[] args) {
ArrayList li=new ArrayList();
li.add(1);
li.add("NB");
li.add(new double[10]);
ArrayList<String> li1=new ArrayList<String>();
li1.add("10");
//遍历获取数据
Iterator it = li.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
}
}