Java 泛型 - 类名
1. 引言
在 Java 中,泛型是一种强大的特性,它可以让我们在编写代码时提供更好的类型安全性和代码重用性。本文将深入探讨 Java 泛型中的类名部分。
2. 什么是泛型?
泛型是一种将类型参数化的方式,它允许我们定义类、接口和方法,在定义的时候使用一个或多个类型参数。这样一来,我们可以在使用泛型的地方使用不同的类型,从而实现代码的通用性。
3. 泛型类的定义
在 Java 中,我们可以定义一个泛型类。泛型类的定义使用了类型参数,它放在类名的后面,使用尖括号(<>)括起来。下面是一个简单的泛型类的例子:
public class Box<T> {
private T item;
public void setItem(T item) {
this.item = item;
}
public T getItem() {
return item;
}
}
在上面的代码中,我们定义了一个名为 Box
的泛型类。它有一个类型参数 T
,代表了这个类可以接受的类型。类中的成员变量 item
和方法 setItem
、getItem
都使用了类型参数 T
。
4. 使用泛型类
使用泛型类非常简单,我们只需要在创建对象的时候提供一个具体的类型参数即可。下面是一个使用 Box
泛型类的示例:
Box<Integer> integerBox = new Box<>();
integerBox.setItem(10);
int value = integerBox.getItem();
System.out.println(value); // 输出 10
在上面的代码中,我们创建了一个 Box
对象,指定了类型参数为 Integer
。然后我们设置了 item
的值为 10,并通过 getItem
方法获取该值并打印出来。
5. 多个类型参数
除了可以使用一个类型参数,我们还可以同时使用多个类型参数。下面是一个使用了两个类型参数的泛型类的示例:
public class Pair<T, U> {
private T first;
private U second;
public Pair(T first, U second) {
this.first = first;
this.second = second;
}
public T getFirst() {
return first;
}
public U getSecond() {
return second;
}
}
在上面的代码中,我们定义了一个名为 Pair
的泛型类,它有两个类型参数 T
和 U
。类中有两个成员变量 first
和 second
,分别表示了两个对象的值。
使用这个泛型类的示例代码如下所示:
Pair<String, Integer> pair = new Pair<>("hello", 42);
String first = pair.getFirst();
Integer second = pair.getSecond();
System.out.println(first); // 输出 "hello"
System.out.println(second); // 输出 42
在上面的代码中,我们创建了一个 Pair
对象,指定了类型参数为 String
和 Integer
。然后我们获取了 first
和 second
的值并打印出来。
6. 通配符
在使用泛型类的时候,有时候我们希望可以接受任意类型的参数,而不仅仅是具体的类型。这时可以使用通配符 ?
。下面是一个使用了通配符的示例:
public static void printBox(Box<?> box) {
System.out.println(box.getItem());
}
在上面的代码中,我们定义了一个静态方法 printBox
,它的参数是一个 Box
对象,但是我们不关心具体的类型是什么。在方法体中,我们只是简单地打印了 box
中的值。
下面是调用这个方法的示例代码:
Box<Integer> integerBox = new Box<>();
integerBox.setItem(10);
printBox(integerBox); // 输出 10
Box<String> stringBox = new Box<>();
stringBox.setItem("hello");
printBox(stringBox); // 输出 "hello"
在上面的代码中,我们调用了 printBox
方法两次,分别传入了一个 Box<Integer>
和一个 Box<String>
对象。由于 printBox