泛型(generics),即“参数化类型”,就是将所操作的数据类型指定为一个参数。
泛型提供了在编译时对数据类型进行安全检测的机制,这个机制实现了:在程序编译期间检测到非法的数据类型。
泛型的三种使用方式:泛型类、泛型接口、泛型方法
泛型类:
public class Test01 <T>{
private T myField;
public Test01(T myField) {
this.myField = myField;
}
public T getMyField() {
return myField;
}
public void setMyField(T myField) {
this.myField = myField;
}
public static void main(String[] args) {
//实例化泛型接口时,必须指定泛型的具体类型
Test01<Integer> i = new Test01<>(1);
Test01<String> hello = new Test01<>("hello");
Test01<Student> student = new Test01<>(new Student("myName",21));
}
private static class Student{
private String name;
private Integer age;
public Student(String name, Integer age) {
this.name = name;
this.age = age;
}
}
}
泛型接口:
public interface Test02 <T>{
T method();
}
//实现泛型接口,不指定类型
class Test02Impl<T> implements Test02<T>{
@Override
public T method() {
return null;
}
}
//实现泛型接口,指定类型
class Test02Impl02 implements Test02<String>{
@Override
public String method() {
return "hello";
}
}
泛型方法:
public class Test03 {
public static <E> void method(E element){
System.out.println(element);
}
public static void main(String[] args) {
String s = "hello";
method(s);
Integer i = 100;
method(i);
}
}
常用的几种泛型通配符:T、E、K、V、?
T(type):表示一种java类型
E(element):代表一个元素
K,V(key,value):代表java中的键值对
?:表示不确定的java类型