定义泛型接口
// 接口
public interface Test<T>{
pubilc T method();
}
// 接口实现类-未传入泛型实参
public class Test01 implements Test<T>{
@Override
public T method(){
// ......
return null;
}
}
// 接口实现类-传入泛型实参
public class Test02 implements Test<String>{
@Override
public String method(){
// ......
return null;
}
}
定义泛型类
class Test<T>{
public T key; //泛型成员变量
public Test(T key){ // 构造函数
this.key = key;
}
// 注意该方法并不是泛型方法,只是一个普通的成员方法
public T method(){
return null;
}
}
// 示例
Test test = new Test<String>("ceshi");
Test test = new Test<Integer>(12);
定义泛型方法
// 泛型方法必须有泛型声明:方法修饰符和返回值之间 必须有 <T> 或 <T,E> 等类似的标识
// <T>标识该方法是个泛型方法,且定义了一个名叫“T”的泛型
// 示例1
public <T> void method(){
// ........
}
// 示例2
public <T> String method(T t){
// ......
return JSON.toJSONString(t);
}
// 示例3
public <T,E> E method(T t, E e){
// ......
return e;
}
静态方法与泛型
静态方法如果想使用泛型(即使这个泛型是类上定义过的),该静态方法必须进行泛型声明变成泛型静态方法
即:如果静态方法要使用泛型的话,必须将静态方法也定义成泛型方法
// 示例1
public static <T> void method(T t){
// ......
}
// 示例2
public Class Test<T>{
public T t;
public Test(T t){
this.t = t;
}
public static <T> void method(T t){
// ......
}
}