Java泛型
Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。
Java泛型类
class test<T>{
public void tt(T t){
System.out.println(t);
}
}
Java泛型方法
class test{
public static <T> void tt(T t){
System.out.println(t);
}
}
非静态方法写法同理,去掉static即可
调用写法
泛型类调用写法
class main{
public static void main(String[] args) {
test<Integer> tt = new test<>();
tt.tt();
}
}
泛型方法调用写法
class main{
public static void main(String[] args) {
test tt = new test();
tt.<Integer>tt(12);
}
}
其中<Integer>可以省略不写
类型绑定:extends
如果你希望泛型的类型必须是某一个类或它的子类,extends或许可以帮助你,写法如下:
public static <K extends A> void Delete(K k){
System.out.println();
}
调用写法跟上面类似
类型绑定:super
如果你希望泛型的类型必须是某一个类或它的父类,super或许可以帮助你,写法就是把上面的extends改成super即可
通配符
通配符 ? 和 <T> 的区别
<T>:声明一个类型
? :通配符只能用作引用形参,匹配所有类型
? 不能作为一个类型,它只能作为另一个类或方法中需要声明的泛型类型
比如以下写法:
public static void test(List<?> list){
}
List是一个泛型类,它需要声明所需要的类型,传入通配符后则表示都匹配
<? extends 类型>
与 <? super 类型>
跟类型绑定:extends用法相同,只是一个用在通配符里,一个作用于类型中
写法如下:
public static void test(List<? super A> list){
}