❮ Java 包装类
Java 注解 ❯
Java 泛型
更新于 2025/12/18 9:46:17
Java 泛型
泛型允许您编写能够处理不同数据类型的类、接口和方法,而无需预先指定确切的类型。
这使您的代码更加灵活、可重用且类型安全。
为什么要使用泛型?
代码可重用性: 只需编写一个类或方法即可处理不同的数据类型。
类型安全性: 在编译时捕获类型错误,而不是在运行时。
更简洁的代码: 获取对象时无需进行类型转换。
泛型类示例
您可以使用泛型创建一个能够处理不同数据类型的类:
class Box
T value; // T 是任何数据类型的占位符
void set(T value) {
this.value = value;
}
T get() {
return value;
}
}
public class Main {
public static void main(String[] args) {
// Create a Box to hold a String
Box
stringBox.set("Hello");
System.out.println("Value: " + stringBox.get());
// Create a Box to hold an Integer
Box
intBox.set(50);
System.out.println("Value: " + intBox.get());
}
}
亲自试一试 »
T 是一个泛型类型参数。它就像数据类型的占位符。
当您创建一个 Box
当您创建一个 Box
这样,同一个类就可以用于不同的数据类型,而无需重写代码。
泛型方法示例
您还可以使用泛型创建适用于任何数据类型的方法:
public class Main {
// 通用方法:适用于任何类型 T
public static
for (T item : array) {
System.out.println(item);
}
}
public static void main(String[] args) {
// 字符串数组
String[] names = {"Jenny", "Liam"};
// 整数数组
Integer[] numbers = {1, 2, 3};
// 使用两个数组调用通用方法
printArray(names);
printArray(numbers);
}
}
亲自试一试 »
示例详解
方法 printArray() 接受一个 T 类型的数组,并打印每个元素。
调用该方法时,Java 会根据传入的参数确定 T 的类型。
当您想编写一个方法来处理多种类型,而不是为每种类型重复编写代码时,这非常有用。
有界类型
您可以使用 extends 关键字来限制泛型类或方法可以接受的类型。
例如,您可以要求类型必须是 Number 的子类:
class Stats
T[] nums;
// 构造函数
Stats(T[] nums) {
this.nums = nums;
}
// 计算平均值
double average() {
double sum = 0;
for (T num : nums) {
sum += num.doubleValue();
}
return sum / nums.length;
}
}
public class Main {
public static void main(String[] args) {
// 与整数一起使用
Integer[] intNums = {10, 20, 30, 40};
Stats
System.out.println("Integer average: " + intStats.average());
// 与 Double 一起使用
Double[] doubleNums = {1.5, 2.5, 3.5};
Stats
System.out.println("Double average: " + doubleStats.average());
}
}
亲自试一试 »
尽管第一个例子中使用的是 int 值,但 .doubleValue() 方法会将它们转换为 double 值,因此结果会显示小数点。
示例详解
.doubleValue():将任何数字转换为 double 类型以进行计算。
只要元素是 Number 的子类,此方法就适用于任何数字数组。
泛型集合
Java 集合(例如 ArrayList 和 HashMap)内部都使用了泛型:
ArrayList
list.add("Apple");
String fruit = list.get(0); // 无需强制转换
摘要
泛型使你的代码更灵活且类型安全。
使用 T 或其他字母来定义类型占位符。
泛型可以应用于类、方法和接口。
使用边界来限制允许的类型。
❮ Java 包装类
Java 注解 ❯