Java 泛型

Microsoft 365 登录 📅 2026-07-15 15:08:40 ✍️ admin 👁️ 1443 ❤️ 557
Java 泛型

❮ 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 = new Box<>();

stringBox.set("Hello");

System.out.println("Value: " + stringBox.get());

// Create a Box to hold an Integer

Box intBox = new Box<>();

intBox.set(50);

System.out.println("Value: " + intBox.get());

}

}

亲自试一试 »

T 是一个泛型类型参数。它就像数据类型的占位符。

当您创建一个 Box 时,T 将变为 String。

当您创建一个 Box 时,T 将变为 Integer。

这样,同一个类就可以用于不同的数据类型,而无需重写代码。

泛型方法示例

您还可以使用泛型创建适用于任何数据类型的方法:

public class Main {

// 通用方法:适用于任何类型 T

public static void printArray(T[] array) {

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);

}

}

亲自试一试 »

示例详解

是一个泛型类型参数——这意味着该方法可以处理任何类型:String、Integer、Double 等。

方法 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 intStats = new Stats<>(intNums);

System.out.println("Integer average: " + intStats.average());

// 与 Double 一起使用

Double[] doubleNums = {1.5, 2.5, 3.5};

Stats doubleStats = new Stats<>(doubleNums);

System.out.println("Double average: " + doubleStats.average());

}

}

亲自试一试 »

尽管第一个例子中使用的是 int 值,但 .doubleValue() 方法会将它们转换为 double 值,因此结果会显示小数点。

示例详解

:限制 T 只能处理 Integer、Double 或 Float 等数值类型。

.doubleValue():将任何数字转换为 double 类型以进行计算。

只要元素是 Number 的子类,此方法就适用于任何数字数组。

泛型集合

Java 集合(例如 ArrayList 和 HashMap)内部都使用了泛型:

ArrayList list = new ArrayList<>();

list.add("Apple");

String fruit = list.get(0); // 无需强制转换

摘要

泛型使你的代码更灵活且类型安全。

使用 T 或其他字母来定义类型占位符。

泛型可以应用于类、方法和接口。

使用边界来限制允许的类型。

❮ Java 包装类

Java 注解 ❯

相关推荐

第14届颁奖大会
英国365bet

第14届颁奖大会

📅 01-03 👁️ 6497
三星Galaxy A7和华为Mate7哪个好
Microsoft 365 登录

三星Galaxy A7和华为Mate7哪个好

📅 01-04 👁️ 4499