Java 中的泛型是一种编程机制,允许你编写可以与多种数据类型一起工作的代码,同时提供编译时类型检查以确保类型的安全性。泛型的主要目的是提高代码的可重用性、类型安全性和程序的整体性能。
泛型类(Generic Class):
在泛型类中,你可以使用一个或多个类型参数,这些类型参数在类被实例化时被具体化。一个简单的泛型类的定义如下:
public class Box<T> {
private T value;
public void setValue(T value) {
this.value = value;
}
public T getValue() {
return value;
}
}
在这个例子中,Box
类是一个泛型类,它有一个类型参数 T
。通过这个类型参数,你可以创建 Box
的实例,这个实例可以存储不同类型的值,而不需要每次都为不同的类型编写不同的类。
使用泛型类的示例:
Box<Integer> integerBox = new Box<>();
integerBox.setValue(42);
int intValue = integerBox.getValue(); // 不需要强制转换
Box<String> stringBox = new Box<>();
stringBox.setValue("Hello, Generics!");
String stringValue = stringBox.getValue();
泛型方法(Generic Method):
除了泛型类,Java 还支持泛型方法。泛型方法可以在普通类或泛型类中定义,它们具有自己的类型参数。以下是一个泛型方法的例子:
public class Utils {
public <T> T genericMethod(T t) {
return t;
}
}
在这个例子中,genericMethod
是一个泛型方法,它有一个类型参数 T
。这个方法可以接受任意类型的参数,并返回相同类型的值。
使用泛型方法的示例:
Utils utils = new Utils();
String result = utils.genericMethod("Hello, Generics!");
Integer number = utils.genericMethod(42);
这样,泛型类和泛型方法使我们可以编写更通用、灵活、类型安全的代码,同时减少了代码中的重复和冗余。在使用泛型时,编译器可以在编译时进行类型检查,从而减少在运行时可能出现的类型错误。