Java泛型是一种强大的特性,它允许在编译时检测非法类型,提高代码的安全性和可读性。以下是Java泛型的详细用法:

泛型方法

泛型方法可以在调用时接收不同类型的参数,编译器会根据传递的参数类型适当地处理每个方法调用。

java

public class GenericMethodTest {

public static void printArray(E[] inputArray) {

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

有界的类型参数

Java泛型的深度解析与实战应用

有时候,你可能想要限制传递给类型参数的类型种类范围。例如,一个操作数字的方法可能只希望接受Number或者Number子类的实例。这就是有界类型参数的目的。

java

public class MaximumTest {

public static > T maximum(T x, T y, T z) {

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 integerBox = new Box<>;

Box stringBox = new Box<>;

integerBox.add(new Integer(10));

stringBox.add(new String("菜鸟教程"));

System.out.printf("整型值为 :%d

integerBox.get);

System.out.printf("字符串为 :%s

stringBox.get);

类型通配符

类型通配符一般是使用 `?` 代替具体的类型参数。例如 `List` 在逻辑上是 `List`、`List` 等所有 `List<具体类型实参>` 的父类。

java

import java.util.;

public class GenericTest {

public static void main(String[] args) {

List name = new ArrayList<>;

List age = new ArrayList<>;

List number = new ArrayList<>;

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泛型的不同用法,包括泛型方法、有界类型参数、泛型类和类型通配符。这些特性使得代码更加通用和类型安全。