当前位置:  首页>> 技术小册>> Java语言基础11-Java中的泛型

之前在学习方法的时候,我们知道了形参和实参的概念。那么为什么方法有形参呢?是因为方法体的功能实现中,需要外界(使用者)给它提供数据,这个数据在编写方法体的时候,数据值是不确定的(形参),需要在调用方法的时候才能确定(实参),例如:编写一个方法,可以求两个整数的和。

  1. public class Demo {
  2. // 求两个整数的和,其中 a b 是形参
  3. public static void add(int a,int b){
  4. return a + b;
  5. }
  6. public static void main(String[] args){
  7. int result = add(1,2); // 1 2 是实参
  8. System.out.println("result = " + result);
  9. }
  10. }

受到上面的启发,JDK 1.5 就设计了泛型的概念。当我们在设计某个类的时候,出现了某个成员的类型不确定,需要在使用这个类的时候才能确定,就可以将这个类型作为参数传递。其实可以声明在类、接口或方法中,代表未知的通用的类型(可以对比方法中的形参来理解)。

  1. package java.util;
  2. public class ArrayList<E> extends AbstractList<E>
  3. implements List<E>, RandomAccess, Cloneable, java.io.Serializable
  4. { // E 就是代表未知的类型,又称为类型形参
  5. public boolean add(E e) { // 添加一个元素到集合中
  6. modCount++;
  7. add(e, elementData, size);
  8. return true;
  9. }
  10. // 其余略
  11. }
  1. package com.github.day10.generic;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. /**
  5. * @author maxiaoke.com
  6. * @version 1.0
  7. */
  8. public class TestGeneric {
  9. public static void main(String[] args) {
  10. List<String> list = new ArrayList<>(); // 此时 <E> 就是 <String>
  11. list.add("1");
  12. list.add("2");
  13. list.add("3");
  14. list.add("4");
  15. System.out.println("list = " + list);
  16. }
  17. }

该分类下的相关小册推荐: