推荐答案
泛型(Generics)是 Java 语言中的一种特性,它允许在定义类、接口和方法时使用类型参数。泛型的主要作用是提供类型安全的代码,并减少类型转换的需要。通过使用泛型,可以在编译时检测到类型错误,从而避免运行时出现类型转换异常。
本题详细解读
什么是泛型?
泛型是 Java 5 引入的一个特性,它允许在定义类、接口和方法时使用类型参数。类型参数可以被具体的类型(如 Integer、String 等)替换,从而使得代码更加通用和类型安全。
泛型的作用
类型安全:泛型允许在编译时检查类型,从而避免在运行时出现类型转换异常。例如,使用泛型集合(如
List<String>)可以确保集合中只能存储String类型的对象。代码复用:通过使用泛型,可以编写通用的代码,适用于多种类型。例如,可以编写一个通用的
Box类,用于存储任意类型的对象。减少类型转换:在使用泛型之前,从集合中获取对象时通常需要进行类型转换。使用泛型后,可以直接获取指定类型的对象,无需进行类型转换。
泛型的使用示例
// www.javascriptcn.com code example
// 定义一个泛型类
class Box<T> {
private T item;
public void setItem(T item) {
this.item = item;
}
public T getItem() {
return item;
}
}
// 使用泛型类
public class Main {
public static void main(String[] args) {
Box<String> stringBox = new Box<>();
stringBox.setItem("Hello");
String item = stringBox.getItem(); // 无需类型转换
System.out.println(item);
}
}泛型通配符
泛型通配符(?)用于表示未知类型。通配符通常用于方法参数中,以接受任意类型的泛型对象。
public void printList(List<?> list) {
for (Object item : list) {
System.out.println(item);
}
}泛型边界
泛型边界用于限制类型参数的范围。可以使用 extends 关键字来指定类型参数必须是某个类的子类或实现某个接口。
// www.javascriptcn.com code example
class NumberBox<T extends Number> {
private T number;
public void setNumber(T number) {
this.number = number;
}
public T getNumber() {
return number;
}
}在这个例子中,T 必须是 Number 类或其子类(如 Integer、Double 等)。
泛型方法的定义
泛型方法是在方法声明中使用类型参数的方法。泛型方法可以在非泛型类中定义。
public <T> void printArray(T[] array) {
for (T element : array) {
System.out.println(element);
}
}在这个例子中,<T> 表示这是一个泛型方法,T 是类型参数。