定义
类型参数化,即把类型作为参数方式的 设计模式。
格式
泛型类 public Class ClassName<T>
泛型接口public interface InterfaceName<t>
泛型方法 public <T> T get(T t) 泛型方法特指在普通类中定义的泛型方法,在返回类型前用泛型符号<T>
例子
泛型类:
public class IpTest<E> {
E e; //成员变量不能为 static
public IpTest() {
}
public IpTest(E element) {
e = element;
}
private E getElement(){
return e;
}
public static void main(String[] args0{
IpTest<String> test = new IpTest<String>(); //泛型调用,此格式常见
}
}
泛型接口
public interface IpTest<T> {
//接口内只有虚拟方法
public T add(T t);
public List<T> addToList(T t);
}
泛型方法
//可以在<T>中指明T的类型,通过extends 和implements等,如extends List ;implements Closeable;
public static <T> void set(T t);
public <T extends List> void set(T t);
public <T> void get (T ... t);
泛型的优点
泛型可以大大增加程序的灵活性,并减少开发工作量 。
最近在做webmagic爬虫, 对于结构化的爬取结果webmagic用pipline处理,一个爬虫可以定义任意个 结构化数据类DAO,但是并不需要定义匹配的pipline方法。如下,webmagic建立泛型接口
public interface PageModelPipeline<T> {
public void process(T t, Task task);
}
使用时,对于任意DAO,都可以通过集成泛型接口实现
public class WeatherTargetPipeline implements PageModelPipeline<WeatherDao>{
public WeatherTargetPipeline() {
// TODO Auto-generated constructor stub
}
@Override
public void process(WeatherDao t, Task task) {
// TODO Auto-generated method stub
//处理逻辑
}
}