黑马程序员-day15-泛型

------- android培训java培训、期待与您交流! ----------

泛型 概述 1.5以后新特性,用于解决安全问题(集合类存放的不是同一类的元素),是一个类型安全机制
优点 将运行异常转移到了编译异常;避免强制转换
格式 <元素类型>,1.7后在定义泛型集合时,后面的尖括号里面的内容可省略
定义泛型 所有与集合类、接口相关的均具备泛型属性,注意equals方法是Object类的,不具备泛型
自定义泛型类 当类中要使用的应用数据类型不确定的时候,定义泛型类,由使用者指定类型;java早期是定义Object,并通过强转来完成扩展,存在安全隐患,现在使用泛型
注意静态方法不能访问泛型类的参数,可在静态方法的主体自定义泛型
泛型方法 在返回值类型前加上泛型,如即可,用于声明一个参数类型与泛型类的泛型不一致的方法
如果参数类型中的泛型已被指定,则方法体无需加泛型,如果参数类型中的泛型没有明确,则方法体必须加上泛型
子父类泛型 当父类没有加泛型时,子类可以加任意泛型
当父类加了泛型未指定泛型类型时,子类也必须加上该泛型且不可指定泛型类型,但可以扩展其他任意泛型类型
当父类加了泛型且明确泛型类型时,子类默认有该泛型,可加可不加
泛型接口 在实现泛型接口时,既可以明确类的泛型元素类型,也可以不明确,建议明确
集合泛型限定 当不明确参数类型时,可以用占位符来表示此处具备一个给定类的某参数类型,不用将方法定义为泛型方法,好处是扩展性强,坏处是无法使用元素的特有方法,只能使用共同方法(大部分是Object类的方法)
没有实际意义,代表任意类型,可以使用在静态方法的参数类型中
<>限定的集合可以对其子类元素进行操作:假设A是B的子类,那么ArrayList也可以存储A的实例对象。
但注意当集合作为参数传递时,如一个方法的参数类型为(ArrayList al),那么不管A和B是什么关系,如果传递(ArrayList al)实例是肯定报错的,也就是说<>中的内容不一样的话,会出现安全隐患报错。
固定限定 <类名>
上限定与下限定 ,A以及A的所有子类
,A以及A的所有父类
注意 一定要记住,集合泛型限定,但是方法的参数仍然是集合,不是限定里的类类型

你可能感兴趣的:(java学习笔记)