泛型的总结

泛型的总结

  • 泛型不支持使用基本数据类型,基本数据类型要使用时需要使用包装类。
  • 泛型不支持使用数组
  • 当使用基本数据类型包装类且获取数据时,如果该属性没有赋值保持默认值的话,那它的值为null,这时要注意自动拆箱会导致空指向异常。
  • 同一个类上可以定义多个泛型标记。
  • 当一个泛型类做为某个方法的参数时,就需要用到通配符 ? 。此时,不能设置数据,只能取出数据。
  • 当使用 ? 通配符取出数据时,数据类型是Object,要给变量赋值时,必须向下转型。
  • T extends 类? extends 类 设置泛型的上限,可以在类声明或方法上使用。
  • ? super 类 设置泛型下限,只能在方法上使用。
  • 泛型接口分两种:一是在子类继续设置泛型标记。二是子类不设置泛型标记,而为父类接口明确地定义一个泛型类型。
  • 泛型方法 public static <T> T fun(T t) T的类型由传入的参数决定。

方法参数中使用通配符 ? 和 不声明泛型类型 和 声明泛型具体类型 区别:

  • 1、public void fun(Generic<?> temp)
使用通配符 ? 获取到的数据类型是 Object,要赋值变量就必须向下转型,同时,因为 ? 不能确定类型,所以不能设置数据。
  • 2、public void fun(Generic temp)
不声明泛型相当于默认是Objecte,此时,可以设置或取出数据,同样,获取到的数据类型是 Object,要赋值变量就必须向下转型。
  • 3、public void fun(Generic temp)
声明泛型具体类型时,可以设置或取出数据,获取到的数据类型是其声明时的类型,要赋值变量不需要向下转型 。
原文地址:https://www.cnblogs.com/haixianet/p/8606862.html