泛型(1)
泛型的概述
泛型是一种未知的数据类型 当我们不知道使用什么数据类型的时候 可以使用泛型
泛型也可以看出是一个变量 用来接收数据类型
当我们创建集合是就确定泛型类型
使用泛型的好处
我们都知道集合中是可以存放任意对象的 只要把对象存储集合后 那么这时他们都会被提升成Object类型 当我们在取出每个对象 并且进行相应的操作 这时必须采用类型转换
创建集合不使用泛型的好处:集合不使用泛型 默认的类型就是Object类型 可以存储任意类型的数据
创建集合不使用泛型的坏处:不安全 会引发异常
代码:
public static void main(String[] args) {
    Collection<Object> list = new ArrayList<>();
    list.add("张三");
    list.add(15);
    list.add(15.0);
    list.add(true);
    Iterator<Object> iterator = list.iterator();
    while (iterator.hasNext()){
        Object next = iterator.next();
        System.out.println(next);
        //要求使用String类里的length方法判断长度
        //向下转型
        String s=(String) next;
        System.out.println(s.length());
    }
}
运行结果:

报出的是类型转换异常 不能将Interger类型转变成String类型
不使用Object类型
代码:
public static void main(String[] args) {
    Collection<String> list = new ArrayList<>();
    list.add("张三");
    list.add("李四");
    list.add("王五");
    Iterator<String> iterator = list.iterator();
    while (iterator.hasNext()){
        String next = iterator.next();
        System.out.println(next);
        String s=(String) next;
        System.out.println(s.length());
    }
}
运行结果

后面的数字就是我们String的长度 因为是遍历 所以只能一个一个算长度 比如:张三 长度为2 ...
泛型的定义和使用
定义一个含有泛型的类 模拟ArrayList集合
泛型是一个未知的数据类型 当我们不确定什么什么数据类型的时候 可以使用泛型
代码:
模拟集合类:
public class DemoArray<E> {
    private E name;
    public E getName() {
        return name;
    }
    public void setName(E name) {
        this.name = name;
    }
}
测试类:
public static void main(String[] args) {
    //泛型使用Integer
    DemoArray<Integer> array = new DemoArray<>();
    array.setName(10);
    System.out.println(array.getName());
    //泛型使用String
    System.out.println("------------------");
    DemoArray<String> array1 = new DemoArray<>();
    array1.setName("张三");
    System.out.println(array1.getName());
    //不使用泛型 默认是Object类型
    System.out.println("------------------");
    DemoArray array2 = new DemoArray();
    array2.setName(11);
    System.out.println(array2.getName());
    array2.setName("张三");
    System.out.println(array2.getName());
}
运行结果:

 
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号