Java中的泛型
泛型:
一种未知的数据类型,当不知道使用什么数据类型的时候可以使用泛型。
也可以看做是一个变量,用来接收数据。
例如: E e :element 元素
T t :type 类型
ArrayList集合在定义的时候,不知道集合中会存那些数据类型的数据,所以类型使用泛型E定义未知数据。
例如:
public class ArrayList<E>( public boolean add(E e){) public E get(int index){} ) ArrayList<String> list = new ArrayList<String>(); //创建集合对象的时候,就会确定泛型的数据类型 public class ArrayList<String>( public boolean add(String e){) public String get(int index){} )
使用泛型和不使用泛型的区别:
/*
创建集合对象 不使用泛型。
好处:
默认的类型就是object类型。可以存储任意类型的数据。
弊端:
集合不安全
*/
private static void method2() { /*使用泛型的好处:避免了类型的转换的麻烦,存储的是什么类型取出的就是什么类型。 把运行异常(代码运行之后的异常),提升到了编译期。 */ ArrayList<String> list = new ArrayList<>(); list.add("abc"); // list.add(1); } private static void method1() { ArrayList list = new ArrayList(); list.add(1); list.add("b"); //获取迭代器 Iterator it = list.iterator(); //使用迭代器中的方法hasNext和next遍历集合。 while (it.hasNext()){ Object obj = it.next(); System.out.println(obj); /*想要使用string类特有的方法length获取字符串的长度 但是多态,多态不能使用子类特有的方法。只能向下转型。 */ String s = (String) obj; System.out.println(s.length());//ClassCastException 抛出异常 因为一个int一个string。 } }