Java 泛型:如何创建与应用

什么是Java泛型
Java泛型是一种参数化类型,它允许在定义类、接口或方法时指定类型参数,这种参数化类型提供了编译时的类型安全检查,从而避免了在运行时可能出现的类型转换错误,泛型在Java 5及以后的版本中被引入,极大地增强了Java的类型系统。
创建泛型类
定义泛型类
在Java中,创建泛型类的基本语法是在类名后添加一对尖括号,尖括号内写上类型参数,以下是一个简单的泛型类示例:
public class Box<T> {
private T t;
public void set(T t) {
this.t = t;
}
public T get() {
return t;
}
}
在这个例子中,Box类是一个泛型类,它有一个类型参数T。T可以代表任何类型,例如Integer、String等。
使用泛型类
创建泛型类的实例时,需要指定具体的类型参数,以下是如何使用Box泛型类的示例:

Box<Integer> integerBox = new Box<Integer>();
integerBox.set(10);
System.out.println("Integer: " + integerBox.get());
Box<String> stringBox = new Box<String>();
stringBox.set("Hello World");
System.out.println("String: " + stringBox.get());
创建泛型接口
定义泛型接口
泛型接口与泛型类类似,也是通过在接口名后添加一对尖括号,并在尖括号内写上类型参数来定义,以下是一个泛型接口的示例:
public interface Generator<T> {
T next();
}
在这个例子中,Generator是一个泛型接口,它有一个类型参数T。
实现泛型接口
创建泛型接口的实现类时,需要指定具体的类型参数,以下是一个实现泛型接口的示例:
public class IntegerGenerator implements Generator<Integer> {
private int count = 0;
@Override
public Integer next() {
return count++;
}
}
public class StringGenerator implements Generator<String> {
private int count = 0;
@Override
public String next() {
return "String " + count++;
}
}
创建泛型方法
定义泛型方法

泛型方法是在方法签名中添加类型参数,以下是一个泛型方法的示例:
public class GenericMethod {
public static <T> void printArray(T[] arr) {
for (T t : arr) {
System.out.print(t + " ");
}
System.out.println();
}
}
在这个例子中,printArray是一个泛型方法,它有一个类型参数T。
使用泛型方法
以下是如何使用泛型方法的示例:
Integer[] intArray = {1, 2, 3, 4, 5};
String[] stringArray = {"Hello", "World", "Java"};
GenericMethod.printArray(intArray);
GenericMethod.printArray(stringArray);
Java泛型是一种强大的特性,它提供了编译时的类型安全检查,避免了运行时类型转换错误,通过创建泛型类、接口和方法,我们可以更好地利用Java的类型系统,提高代码的可读性和可维护性。