Java基础之【泛型】

最近在复习Java基础,发现自己对于泛型的概念理解的还不是很好,所以特意写一篇博文记录一下。

一、基本概念

泛型是JDK 1.5引入的一个新特性,泛型的引入很大程度上都是为了让集合能记住其元素的数据类型,避免了类型转换引起的ClassCastException异常。

泛型的本质是参数化类型,允许程序将类型作为一种参数,具体使用方法为:

在集合接口、类后增加尖括号,尖括号里放一个数据类型,即表明这个集合接口、集合类只能保存特定类型的对象。

List<String> strList = new ArrayList<String>();

二、泛型类与接口

除了可以在集合中使用泛型来限定集合内数据类型,还可以在接口和类中加入泛型:在定义接口、类时生命类型形参,类型形参在整个接口、类体内可当成类型使用。

//泛型接口定义
public interface Generator<T> {
    public T method();
}

//泛型类定义
public class Generic<T>{

    private T key;

    public Generic(T key) {
        this.key = key;
    }

    public T getKey(){
        return key;
    }
}

三、类型通配符

常用的通配符有: T,E,K,V,?

  • ? 表示不确定的 java 类型
  • T (type) 表示具体的一个 java 类型
  • K V (key value) 分别代表 java 键值中的 Key Value
  • E (element) 代表 Element

四、泛型方法

所谓的泛型方法,就是在声明方法时定义一个或多个类型形参。

  public static < E > void printArray( E[] inputArray )
   {
         for ( E element : inputArray ){
            System.out.printf( "%s ", element );
         }
         System.out.println();
    }

五、类型擦除

Java 的泛型是伪泛型,这是因为 Java 在编译期间,所有的泛型信息都会被擦掉,这也就是通常所说类型擦除 。

六、参考书籍与文章

《疯狂Java讲义》P334-P355

JavaGuide:泛型了解么?什么是类型擦除?介绍一下常用的通配符?

本文系作者 @ 原创发布在 Luninousail ' Blog。未经许可,禁止转载。

喜欢()
评论 (0)
183 文章
2 评论
14 喜欢
Top