Java泛型是一种强大的特性,它允许在编译时检测非法类型,提高代码的安全性和可读性。以下是Java泛型的详细用法:
泛型方法
泛型方法可以在调用时接收不同类型的参数,编译器会根据传递的参数类型适当地处理每个方法调用。
java
public class GenericMethodTest {
public static
for (E element : inputArray) {
System.out.printf("%s ", element);
System.out.println;
public static void main(String args[]) {
Integer[] intArray = {1, 2, 3, 4, 5};
Double[] doubleArray = {1.1, 2.2, 3.3, 4.4};
Character[] charArray = {'H', 'E', 'L', 'L', 'O'};
System.out.println("整型数组元素为:");
printArray(intArray);
System.out.println("
双精度型数组元素为:");
printArray(doubleArray);
System.out.println("
字符型数组元素为:");
printArray(charArray);
有界的类型参数
有时候,你可能想要限制传递给类型参数的类型种类范围。例如,一个操作数字的方法可能只希望接受Number或者Number子类的实例。这就是有界类型参数的目的。
java
public class MaximumTest {
public static
T max = x;
if (pareTo(max) > 0) {
max = y;
if (pareTo(max) > 0) {
max = z;
return max;
public static void main(String args[]) {
System.out.printf("%d, %d 和 %d 中最大的数为 %d
3, 4, 5, maximum(3, 4, 5));
System.out.printf("%.1f, %.1f 和 %.1f 中最大的数为 %.1f
6.6, 8.8, 7.7, maximum(6.6, 8.8, 7.7));
System.out.printf("%s, %s 和 %s 中最大的数为 %s
"pear", "apple", "orange", maximum("pear", "apple", "orange"));
泛型类
泛型类的声明和非泛型类的声明类似,除了在类名后面添加了类型参数声明部分。
java
public class Box
private T t;
public void add(T t) {
this.t = t;
public T get {
return t;
public static void main(String[] args) {
Box
Box
integerBox.add(new Integer(10));
stringBox.add(new String("菜鸟教程"));
System.out.printf("整型值为 :%d
integerBox.get);
System.out.printf("字符串为 :%s
stringBox.get);
类型通配符
类型通配符一般是使用 `?` 代替具体的类型参数。例如 `List>` 在逻辑上是 `List
java
import java.util.;
public class GenericTest {
public static void main(String[] args) {
List
List
List
name.add("icon");
age.add(18);
number.add(314);
getData(name);
getData(age);
getData(number);
public static void getData(List> data) {
System.out.println("data :" + data.get(0));
以上代码示例展示了Java泛型的不同用法,包括泛型方法、有界类型参数、泛型类和类型通配符。这些特性使得代码更加通用和类型安全。