泛型是Java中的一项重要特性,它允许我们在定义类、接口或方法时使用类型参数,以实现代码的重用性和类型安全性。对于之前使用int类型数组的情况,我们可以使用泛型来修改,使得数组可以存储任意类型的元素。

使用泛型定义数组

在Java中,要使用泛型定义一个数组,我们需要使用类型参数来代替具体的数组元素类型。语法上,我们将类型参数放在类名后面的尖括号(<>)中,然后在定义数组时使用该类型参数作为数组的元素类型。例如,我们可以定义一个泛型数组类如下:

public class GenericArray<T> {
    private T[] array;
    
    public GenericArray(int size) {
        array = (T[]) new Object[size];
    }
    
    // ...
}


在上述代码中,T是类型参数,代表了数组的元素类型。注意,由于Java中不允许创建泛型数组,我们需要使用强制类型转换来创建一个Object类型的数组,然后再将其强制转换为T[]类型。

数组元素的操作

在泛型数组中,我们可以像操作普通数组一样对其元素进行操作。例如,我们可以通过索引来访问数组元素,并对其进行赋值或读取:

public T get(int index) {
    return array[index];
}

public void set(int index, T value) {
    array[index] = value;
}


在上述代码中,get方法用于返回指定索引位置的数组元素,而set方法用于将指定索引位置的数组元素设置为给定的值。

泛型数组的使用

使用泛型数组时,我们可以将泛型参数替换为具体的类型,从而创建一个特定类型的数组。下面我们来演示一个泛型数组的使用例子:

GenericArray<String> stringArray = new GenericArray<>(10);
stringArray.set(0, "Hello");
String str = stringArray.get(0);
System.out.println(str);  // 输出 "Hello"

GenericArray<Integer> intArray = new GenericArray<>(5);
intArray.set(2, 42);
int value = intArray.get(2);
System.out.println(value);  // 输出 42


在上述代码中,我们分别创建了一个可以存储String类型元素的泛型数组stringArray和一个可以存储Integer类型元素的泛型数组intArray。通过set方法我们可以设置数组中指定索引位置的元素,通过get方法我们可以读取数组中指定索引位置的元素。