泛型

泛型 = 类型参数化
在定义类、接口或方法时,不指定具体类型,而是用类型占位符,等到使用时再传入真实类型。


基本语法

<T>
放在类名或方法名的后面

// 定义一个泛型类
public class Box<T> {
    private T content;

    public void put(T item) {
        this.content = item;
    }

    public T get() {
        return content;
    }
}

// 使用时指定类型
Box<String> stringBox = new Box<>();
stringBox.put("Hello");      // ✅ OK
String s = stringBox.get();  // ✅ 直接返回 String,无需强制转换

Box<Integer> intBox = new Box<>();
intBox.put(100);            // ✅ OK
Integer n = intBox.get();   // ✅ 返回 Integer

泛型方法

方法也可以有自己的泛型,即使类不是泛型。
语法 写在返回类型的前面

public class Printer {
    // 泛型方法:可以打印任意类型
    public static <T> void print(T item) {
        System.out.println(item);
    }
}

// 调用
Printer.print("Hello");   // T = String
Printer.print(42);        // T = Integer

例子

public static <T> Result<T> success(T java) {
    Result<T> result = new Result<>();
    result.code = 200;
    result.msg = "操作成功";
    result.data = data;
    return result;
}
  • 方法级别的泛型声明
    • 告诉编译器 这个方法会使用一个泛型类型,暂时叫T
    • 作用范围仅限于这个方法(包括返回类型和参数类型)

静态方法中的泛型必须自己声明,因为静态方法属于类,不依赖实例,所以必须重新声明。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐