Java泛型基础

一、介绍

泛型就是将类型参数化的过程,就是把变量类型当做一个变量。

二、使用

泛型是JDK1.5增加的新特性,泛型有三种使用方式,分别为泛型类、泛型接口、泛型方法。

1.泛型类
class Generic<T> {
    private T t;
    public Generic(T t) {
        this.t = t;
    }
}
//使用,jdk1.7之后,支持棱形语法
Generic<Integer> generic1 = new Generic<>(1);
Generic<String> generic2 = new Generic<>("hello");
2.泛型接口
interface Generic<T>{
    void setValue(T t);
    T getValue();
}
3.泛型方法
public <T> void setValue(T t){
        System.out.println(t);
}
三、泛型通配符
1.泛型任意类型(匹配Object及任意类型)
public static void print(List<?> list){
        System.out.println(list);
    }
//例如
List<String> list = new ArrayList<>();
list.add("hello");
List<Integer> list2 = new ArrayList<>();
list2.add(1);
print(list);
print(list2);
2.泛型上界(T为Number类型或者Number的子类型)
class Generic<T extends Number> {
    private T t;
    public Generic(T t) {
        this.t = t;
    }
}
//例如:
Generic<Integer> generic1 = new Generic<>(1);
Generic<Double> generic2 = new Generic<>(1.1);
//这里会发生编译错误
Generic<String> generic3 = new Generic<>("hello");
3.泛型下界(?为String类型或者String的父类)
public static void print(List<? super String> list){
        System.out.println(list);
    }
四、类型参数命名约定

最常用的类型参数名称是:

  • E - Element (Java Collections Framework广泛使用)
  • K - Key
  • N - Number
  • T - Type
  • V - Value
  • S,U,V etc. - 2nd, 3rd, 4th types
五、总结

1.将运行时可能发生的类型转换错误,提前到编译期检查。

//例如jdk1.5之前没有泛型的情况下
List list = new ArrayList();
list.add(1);
list.add("hello");
//这里会发生类型转换错误,运行时才会发现。
String str = (String) list.get(0);

2.复用代码逻辑.
3.包含任意通配符?,只能get,不能set

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容