< meta http-equiv="description" content=". 可以再编译是检查存储的数据是否正确。我们开发有一个趋向就是尽早的发现错误, 对java来说, 最好就是再编译阶段, 泛型正好符合这一条件, 如再testGeneric中, strList.add() 如果加入一个非String类型的类或者其子类的话"/>

Java 泛型的基本使用简介

[来源] 达内    [编辑] 达内   [时间]2013-01-08

. 可以再编译是检查存储的数据是否正确。我们开发有一个趋向就是尽早的发现错误, 对java来说, 最好就是再编译阶段, 泛型正好符合这一条件, 如再testGeneric中, strList.add() 如果加入一个非String类型的类或者其子类的话

  JDK 5.0 以后加入了泛型的概念。我们可以看一下简单的例子:

  public class GenericExample {

  public void testOrign() {

  List strList = new ArrayList();

  strList.add("test1");

  String test1 = (String)strList.get(0);

  System.out.println("Test 1 : " + test1);

  }

  public void testGeneric() {

  List strList = new ArrayList();

  strList.add("test1");

  String test1 = strList.get(0);

  System.out.println("Test 1 : " + test1);

  }

  }

  testOring方法是不加入泛型时的编码方法。

  testGeneric是加入泛型后的编码方法。首先我们定义了一个List, 制定List的类型为String, 就是说List里边存储的类型为String类型,这样我们再存储的时候, List.add()方法加入的参数一定要是一String类型的变量, 要不编译就会出现错务, 当我们从List里取值的时候, 业不需要进行类型转换, 可以直接得到String类型的值。

  那么我们为什么要泛型呢? 有两个好处:

  1. 可以再编译是检查存储的数据是否正确。我们开发有一个趋向就是尽早的发现错误, 对java来说, 最好就是再编译阶段, 泛型正好符合这一条件, 如再testGeneric中, strList.add() 如果加入一个非String类型的类或者其子类的话, 那么编译就会出现错误。

  2. 减少了强制转换, String test1 = (String)strList.get(0);这样的操作属于一种向下转型, 是比较危险的操作, 当List内存储的对象不适String时就会发生错误。

资源下载