泛型

目录

泛型概述

泛型的好处

泛型方法

泛型概述

泛型:是JDK5中引入的特性,可以在编译阶段约束操作的数据类型,并进行检查。

泛型的格式:<数据类型>

注意:泛型只能支持引用数据类型;

import java.util.ArrayList;
import java.util.Iterator;

public class GenericsDemo1 {
    public static void main(String[] args) {
        //1.创建集合的对象
        //如果我们没有给集合指定类型,默认为所有的数据类型都是Object类型;
        //此时推出了泛型;
        ArrayList list=new ArrayList();
        //2.添加数据
        //list.add(123);
        list.add("aaa");
        //list.add(new Student("zhangsan",123));
        //3.遍历集合获取里面的每一个元素;
        Iterator it=list.iterator();
        while(it.hasNext()){
            String str=(String)it.next();
            str.length();
            System.out.println(str);
        }
    }
}

泛型的好处

  • 统一数据类型
  • 把运行时期的问题提前到了编译期间,避免了强制类型转换可能出现的异常,因为在编译阶段类型就能确定下来;

泛型的细节:

  • 泛型中不能写基本数据类型;
  • 指定泛型的具体类型后,传递数据时,可以传入该类类型或者其子类类型;
  • 如果不写泛型,类型默认是Object;

泛型类:

使用场景:当一个类中,某个变量的数据类型不确定时,就可以定义带有泛型的类;

import java.util.Arrays;

public class MyArrayList {
    //E:表示不确定的类型,该类型在类名后面已经定义过了;
    //e:形参的名字,变量名;
    Object[] obj=new Object[10];
    int size;
    public boolean add(E e){
        obj[size]=e;
        size++;
        return true;
    }
    public E get(int index){
        return (E)obj[index];//强转;
    }

    @Override
    public String toString() {
        return Arrays.toString(obj);
    }
}
public class GenericsDemo2 {
    public static void main(String[] args) {
        MyArrayList list=new MyArrayList<>();

        //list.add("aaa");
        //list.add("bbb");
        //System.out.println(list);
        //[aaa, bbb, null, null, null, null, null, null, null, null]
        MyArrayList list2=new MyArrayList<>();
        list2.add(123);
        list2.add(456);
        list2.add(789);

        int i=list2.get (0);
        System.out.println(i);
        System.out.println(list2);
    }
}

泛型方法

方法中形参的类型不确定时,可以使用类名后面定义的泛型,表示不确定的类型;

方法中形参类型不确定时:

  • 使用类名后面定义的泛型;
  • 在方法申明定义自己的泛型;

格式:

修饰符<类型>返回值类型 方法名(类型 变量名){

}

import java.util.ArrayList;

public class ListUtil {
    private ListUtil(){}
        //1.定义一个静态方法addAll,用来添加多个集合的元素;
        public static void addAll(ArrayList list, E e1, E e2, E e3, E e4){
        list.add(e1);
        list.add(e2);
        list.add(e3);
        list.add(e4);
        }
        public void show(){
            System.out.println("小仙女");
        }
    }

import java.util.ArrayList;

public class GenericsDemo3 {
    public static void main(String[] args) {
        //测试类
        ArrayList list=new ArrayList<>();
        ListUtil.addAll(list,"aaa","bbb","ccc","ddd");
        System.out.println(list);
        //[aaa, bbb, ccc, ddd]
    }
}

泛型接口:

  • 实现类给出具体的类型
  • 实现类延续泛型,创建实现类对象时再确定类型;

你可能感兴趣的:(java,开发语言)