一.泛型是什么:


泛型是指参数化类型的能力。


可以定义带泛型的类,方法或者接口。随后编译器会具体的类型来替换它。


二.泛型的好处:


下面先看一个的小demo:

List list = new ArrayList();
     list.add(1);
     list.add(2);
     list.add("3");//一不小心插入了 String
     for (Object object : list){
        //取出“3”时报 错 : ClassCastException
        Integert = (Integer)object;
  }

  由于对象进入集合后失去了其状态信息,所以取出来时需要进行强制类型转换。


上面是一个集合没有使用泛型时出现的错误,那么当我们使用泛型时,该错误就会避免,例如:

List<Integer>list = newArrayList<Integer>();
     list.add(1);
     list.add(2);
     list.add("3");//插入String,  运行时不出错但在编译会报错误

//定义一个接口
 interface Friuit<E>{
 
 
   boolean eat(E e);
}
//定义一个类
 public class  Apple<T>{
   private T info;
   public Apple(T info) {
     this.info = info;
   }
  
   public T getInfo(){
     return this.info;
   }
  
   public void setInfo(T info){
     this.info = info;
   }
    
   public static void main(String[] args) {
      Apple<String>   ap1 = newApple<String>("小苹果");
      System.out.println(ap1.getInfo());
      Apple<Double> ap2 = newApple<Double>(1.23);
      System.out.println(ap2.getInfo());
   }
}
 
 // 
 定义一个f泛型方法 
 

 public  static <E> void print(E[]  list){} 
所谓泛型方法,就是在声明方法时定义一个或多个类型形参。泛型方法的用法格式如下:
修饰符     < T>  返回值类型     方法名(形参列表 E[]  list){
        //方法体
}

把上面方法的格式和普通方法的格式进行对比,不难发现泛型方法的方法签名比普通方法的方法签名多了

1.类型形参声明,

2.类型形参声明以尖括号包括起来,

3.多个类型形参之间以逗号(,)隔开,

4.所有的类型形参声明方法方法修饰符和方法返回值类型之间。

三.泛型使用的注意事项:



1.不能使用泛型类型参数来创建数组。


2.不能使用泛型类型参数来创建实例。

3.不能在静态环境中使用类的泛型类型参数。


4.在异常类中不能使用泛型类型