文章目录
- 前言
- 一、泛型类
- 二、泛型接口
- 三、泛型方法
前言
Java泛型是JDK5中引入的一个新特性。泛型解决了编译时类型安全检测机制,使代码具有更好的安全性和可读性。泛型在集合类中广泛使用,如:ArrayList。
泛型的本质是参数化类型。泛型有三种常用的使用方式:泛型类,泛型接口和泛型方法
一、泛型类
/**
* Java库中 E表示集合的元素类型,K 和 V分别表示表的关键字与值的类型,
* T(需要时还可以用临近的字母 U 和 S)表示“任意类型”
*
* @author Mr.Guo
* @date 2021/2/3 下午1:54
*/
public class BaseBean<T, U, S> {
private T prop1;
private U prop2;
private S prop3;
public BaseBean(T t, U u, S s) {
this.prop1 = t;
this.prop2 = u;
this.prop3 = s;
}
public T getProp1() {
return this.prop1;
}
public U getProp2() {
return this.prop2;
}
public S getProp3() {
return this.prop3;
}
public static void main(String[] args) {
BaseBean<String, Integer, Date> bean = new BaseBean<>("string", 1, new Date());
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("prop1=>" + bean.getProp1());
System.out.println("prop2=>" + bean.getProp2());
System.out.println("prop3=>" + dateFormat.format(bean.getProp3()));
}
}
运行结果:
prop1=>string prop2=>1 prop3=>2021-02-03 14:50:27
二、泛型接口
定义一个接口
/**
* @author Mr.Guo
* @date 2021/2/3 下午3:00
*/
public interface BaseInterface<T, U> {
T getProp1();
U getProp2();
}
第一种实现方式
/**
* @author Mr.Guo
* @date 2021/2/3 下午3:02
*/
public class Bean1 implements BaseInterface<String, Integer> {
@Override
public String getProp1() {
return "String";
}
@Override
public Integer getProp2() {
return 1;
}
}
第二种实现方式
/**
* @author Mr.Guo
* @date 2021/2/3 下午3:03
*/
public class Bean2<T, U> implements BaseInterface<T, U> {
T prop1;
U prop2;
@Override
public T getProp1() {
return prop1;
}
@Override
public U getProp2() {
return prop2;
}
}
三、泛型方法
/**
* @author Mr.Guo
* @date 2021/2/3 下午3:08
*/
public class Bean {
public <T> T parse(String s) {
return null;
}
public <T> T getMiddle(T... arr) {
return arr[arr.length / 2];
}
}