目录
理解泛型
泛型是为了避免数据类型不匹配而设计的,本质就是把数据类型参数化,让数据类型可以像参数一样传递。常见的有泛型类、泛型接口和泛型方法。
定义泛型
E | Element元素 |
T | Type类型 |
K | Key键 |
V | Value值 |
? | 不确定类型 |
泛型的使用
泛型类
public class Generic<T> {
private T id;
// 静态方法不能使用类中的泛型,但可以定义成泛型方法
// public static T demo(){
// return null;
// }
public T getId() {
return id;
}
public void setId(T id) {
this.id = id;
}
}
泛型接口
public interface GenericInterface<T> {
T getId(T id);
}
public class Generic implements GenericInterface<Integer> {
@Override
public Integer getId(Integer id) {
return id;
}
public static void main(String[] args) {
Generic generic=new Generic();
System.out.println(generic.getId(1));
GenericInterface<Integer> generic1=new Generic();
System.out.println(generic1.getId(1));
}
}
泛型方法
public class MethodGeneric {
public <T> void setName(T name){
System.out.println(name);
}
public <T> T getName(T name){
return name;
}
public static <T> void setFlag(T flag){
System.out.println(flag);
}
public static <T> T getFlag(T flag){
return flag;
}
public <T> void method(T...args){
for(T t:args){
System.out.println(t);
}
}
}
public class Test {
public static void main(String[] args) {
MethodGeneric methodGeneric=new MethodGeneric();
methodGeneric.setFlag("java");
methodGeneric.setFlag(123);
System.out.println(methodGeneric.getFlag("java"));
System.out.println(methodGeneric.getGlag(123));
String[] arr1=new String[]{"a","b","c"};
Integer[] arr2=new Integer[]{1,2,3};
methodGeneric.method(arr1);
methodGeneric.method(arr2);
}
}