JavaSE 泛型

1. 泛型定义

Java 语言允许在类或接口的定义中,用一个占位符替代实际的类类型。这个技术称为泛型(generic)。通过使用泛型,可以定义一个类,其对象的数据类型由类的使用者在以后确定。

通过使用泛型技术,定义时,不需要指明具体的数据类型,而是使用泛型数据类型替代实际的数据类型,从而定义一个泛型类(generic class)。当使用这个类创建实例时,再根据实际情况选择具体的数据类型。

为了在定义接口或类时建立泛型,可以在定义首行的接口名或类名的后面,写一个 。标识符 T 可以是任何标识符。

2. 泛型接口

  • 接口类如下:
public interface Pairable<T>
{
    public T getFirst();
    public T getSecond();
}

为实现这个接口类,则开头写为:

public class OrderedPair<T> implements Pairable<T>

3. 泛型类

在泛型类中,继承了接口后,对于私有域中的数据类型、构造方法的两个参数的数据类型、方法 getFirst 和 getSecond 的返回类型,均为 泛型T。

T 可以是数据与、方法参数及局部变量的数据类型,也可以是方法的返回类型。

例如,创建 String 对象的实例,可以写如下语句:

OrderedPair<String> fruit = new OrderedPair<>("apple","banana");

现在,OrderedPair 定义中作为数据类型出现的 T ,都将使用 String 替代。

4. 泛型方法

假定有一个类,在它的头部没有定义类型参数,但在这个类的方法中需要使用泛型数据类型。编写泛型方法(generic method)的步骤如下:

  • 在尖括号中写上类型参数,放在方法头部返回类型的前面。
  • 在方法内使用类型参数,如同在一般类中的使用,即,或作为返回类型、方法参数的数据类型,或作为方法体内变量的数据类型。

具体写法如下:

// 泛型方法
public static <T> void displayArray(T[] anArray) {...}

// 方法实现
String[] stringArray = {"apple","banana"};
displayArray(stringArray);

在泛型方法中的参数也是泛型,因此在实现泛型方法时直接使用定义好的参数即可。

posted @ 2020-10-27 20:52  John_yan15  阅读(72)  评论(0编辑  收藏  举报