泛型:指在定义时不会设置参数的具体类型,而是在类使用时(创建对象)再进行类型的定义。
格式: 类名的右边定义<> ,在括号中定义个通配符,只有在使用时才告知类型,常见的类型参数有T、E、K、V等,T可以代表任意类,E表示Element,K和V互相搭配使用。
public class Generic<T,E> {
T value1;
E value2;
public<T> void test1(T a) {
System.out.println(a);
}
public static void main(String[] args) {
Generic<Integer,String> generic=new Generic<>();
generic.value1=10;
generic.value2="111";
generic.test1("你好");
}
}
实现接口时可以保留泛型,也可以如下明确类型:
public interface Ct<E> {
boolean ct(E e1,E e2);
}
public class testComparator implements Ct<Integer>{
@Override
public boolean ct(Integer e1, Integer e2) {
if(e1>e2) {
return true;
}else {
return false;
}
}
}
<?>表示可以接受该类所有类型的泛型变量。
public class Generic<T> {
private T t;
public void setT(T t) {
this.t=t;
}
public T getT() {
return t;
}
public static void test(Generic<?> a) {
System.out.println("你好"+a.getT());
}
public static void main(String[] args) {
Generic<String> generic=new Generic<>();
generic.setT("张三");
test(generic);
Generic<Integer> generic1=new Generic<>();
generic1.setT(123);
test(generic1);
}
}