-
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。Generic有“类的,属性的”之意,在Java中代表泛型。泛型作为一种安全机制而产生。
-
泛型的类或接口在取出对象时将不需要再进行向下类型转换,因为存储的时候就是该类型。
-
泛型的使用让安全问题在编译时就报错而不是运行后抛出异常,这样便于程序员及时准确地发现问题。
- ? 表示不确定的java类型。
- T 表示java类型。
- K V 分别代表java键值中的Key Value。
- E 代表Element。
泛型类定义
class ClassName<T>
class ClassName<?>
表示接收T以及T的子类
class ClassName<? extend T>
表示接收T以及T的父类
class ClassName<? super T>
泛型方法定义
使用泛型类的泛型参数来定义
例如,泛型类为:
class Tool<T>
则泛型方法可以定义为:
void show(T t)
自定义泛型类型
<E> void run(E e)
public class BirdGeneric<T> {
public BirdGeneric(T t) {
System.out.println(t);
}
public void fly(T t) {
System.out.println("fly:" + t);
}
public <E> void run(E e) {
System.out.println("run:" + e);
}
public static <R> void drink(R t) {
System.out.println("drink:" + t);
}
}
public class TestGeneric {
public static void main(String[] args) {
BirdGeneric<String> b1 = new BirdGeneric<>("test");
b1.fly("b1-fly");
BirdGeneric.drink(1);
BirdGeneric<Integer> b2 = new BirdGeneric<>(11);
b2.fly(22);
b2.run("字符串");
b2.run(11);
}
}
- 运行结果
test
fly:b1-fly
drink:1
11
fly:22
run:字符串
run:11