Java 泛型是Java编程语言的一个重要特性,它提供了参数化类型的能力,使得代码更加灵活、安全和易于维护。以下是Java泛型的一些基本概念和用法。

基本概念

泛型类

泛型类允许在定义类时指定一个或多个类型参数,这些类型参数在类使用时被替换为具体的类型。

public class Box<T> {
    T t;
}

泛型接口

泛型接口与泛型类类似,允许在接口定义时指定类型参数。

public interface Generator<T> {
    T next();
}

泛型方法

泛型方法可以在类中定义,它允许在方法签名中指定类型参数。

public class GenericMethods {
    public static <T> void printArray(T[] arr) {
        for (T t : arr) {
            System.out.print(t + " ");
        }
        System.out.println();
    }
}

使用泛型

类型擦除

Java 泛型在运行时会被擦除,也就是说,类型参数在运行时不会存在,所有的类型信息都会被擦除,替换为Object类型。

类型边界

类型边界可以限制泛型参数的类型,例如:

public class GenericWithBounds<T extends Number> {
    // ...
}

这意味着T必须是一个Number的子类型。

实例

以下是一个简单的泛型示例:

public class Main {
    public static void main(String[] args) {
        Box<Integer> integerBox = new Box<>();
        Box<String> stringBox = new Box<>();
        
        integerBox.t = 10;
        stringBox.t = "Hello World!";
        
        System.out.println(integerBox.t);
        System.out.println(stringBox.t);
    }
}

在这个例子中,Box类是一个泛型类,它可以容纳任何类型的对象。

扩展阅读

更多关于Java泛型的内容,您可以阅读Java 泛型深入浅出

(center)Java Generics