泛型

泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。

有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。

泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的。

泛型通配符T,E,K,V区别===============》使用大写字母A,B,C,D......X,Y,Z定义的,就都是泛型

  • ? 表示不确定的java类型
  • T (type) 表示具体的一个java类型
  • K V (key value) 分别代表java键值中的Key Value
  • E (element) 代表Element

Class<T>在实例化的时候,T要替换成具体类

Class<?>它是个通配泛型,?可以代表任何类型,主要用于声明时的限制情况

 ?使用场景 和Object一样,和C++的Void 指针一样,基本上就是不确定类型,可以指向任何对象。一般用在引用。

泛型的使用

泛型有三种使用方式,分别为:泛型类、泛型接口、泛型方法。

 

泛型类:===》定义:定义类时使用泛型。

class 类名<字母列表>{

修饰符 字母 属性;

修饰符 构造器(字母){   }

修饰符 返回类型 方法(字母)

}

=====》

public class Student<T1,T2>

Student<String,Integer> stu = new Student<String,Integer> ();

泛型方法:

泛型方法的定义======》(输入参数是泛型)

[public] [static] <T> 返回值类型 方法名(T 参数列表)

public static <T> void test(T a)

原文地址:https://www.cnblogs.com/KL2016/p/14678266.html