1.泛型的理解

1、泛型又称参数化类型,是jdk5.0出现的新特性,解决数据类型的安全性问题

2、在类声明或实例化时只需要指定需要的具体类型即可

3、java泛型可以保证程序在编译时没有发出警告,运行时就不会产生ClassCastException异常

4、泛型的作用,可以在类声明时通过一个标识来表示类中某个属性的类型,或者是某个方法的返回值的类型,或者是参数类型。

2.泛型的声明

interface 接口{}和class类{}

1、其中,T、K、V不代表值,而是表示类型

2、任意字母都可以。常用T表示,是Type的缩写

实例化:List strlist = new ArrayList<>();

注意:泛型T、E只能是引用类型,在指定泛型具体类型后,可以传入该类型或其子类类型

3.自定义泛型

class 类名 {}

注意细节:

1、普通成员可以使用泛型(属性、方法);

2、使用泛型的数组不能初始化(T[] t = new T[]、数组在new时不能确定T的类型,或无法在内存中开辟空间)

3、静态方法中不能使用类的泛型、静态和类相关,在类加载时,对象还没有创建,JVM无法完成初始化工作

4、泛型类的类型,是在创建对象时确定的(因为创建对象时,需要指定确定类型)

5、如果在创建对象时,没有指定类型,默认为Object

4.泛型方法和使用了泛型的方法

  1. class Fish<T,R> {
  2. public void run(){
  3. //普通方法
  4. }
  5. public <U,M> void eat(U u,M m) {
  6. //泛型方法
  7. }
  8. public void hi(T t) {
  9. //使用了类声明的泛型
  10. }
  11. }

5.泛型的继承和通配符

1、泛型不具备继承性

List

2、<?>:支持任意泛型类型

3、<? extends A>:支持A类和A类的子类,规定了泛型的上限

4、<? super A>:支持A类和A类的父类,规定了泛型的下限

一般用于形参传递

  1. public void equals(List<? extends A> list){
  2. }

6.JUnit

1、JUnit是一个Java语言的单元测试框架

2、多数Java的开发环境都已经继承了JUnit作为JUnit为单元测试的工具