全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-10 6 分钟 ✍️ juanwangdev

泛型类

泛型类在类名后声明类型参数,创建实例时指定具体类型。

泛型类定义

Java
// 泛型类定义
public class Box<T> {
    private T value;

    public void set(T value) {
        this.value = value;
    }

    public T get() {
        return value;
    }
}

泛型类使用

Java
// 创建实例时指定类型
Box<String> stringBox = new Box<>();
stringBox.set("Hello");
String s = stringBox.get();  // 无需转型

Box<Integer> intBox = new Box<>();
intBox.set(100);
Integer i = intBox.get();    // 无需转型

类型推断:Java 7+ 可省略右侧类型参数:new Box<>()

多类型参数

Java
// 多个类型参数
public class Pair<K, V> {
    private K key;
    private V value;

    public Pair(K key, V value) {
        this.key = key;
        this.value = value;
    }

    public K getKey() { return key; }
    public V getValue() { return value; }
}

// 使用
Pair<String, Integer> pair = new Pair<>("age", 25);
String key = pair.getKey();    // "age"
Integer value = pair.getValue();  // 25

常见命名约定

类型参数常见用途
TType,任意类型
EElement,集合元素
KKey,键
VValue,值
NNumber,数值
RResult,返回类型

泛型类应用示例

泛型容器

Java
public class Container<T> {
    private List<T> items = new ArrayList<>();

    public void add(T item) {
        items.add(item);
    }

    public T get(int index) {
        return items.get(index);
    }

    public int size() {
        return items.size();
    }
}

泛型结果包装

Java
public class Result<T> {
    private boolean success;
    private T data;
    private String message;

    public Result(boolean success, T data, String message) {
        this.success = success;
        this.data = data;
        this.message = message;
    }

    public boolean isSuccess() { return success; }
    public T getData() { return data; }
    public String getMessage() { return message; }
}

// 使用
Result<User> result = new Result<>(true, user, "查询成功");
User user = result.getData();

泛型类 vs 普通类

特性泛型类普通类
类型安全编译期检查运行时可能出错
转型无需手动转型需手动转型
代码复用一套代码多类型需为每种类型写代码

要点总结

  • 泛型类在类名后声明类型参数 <T>
  • 创建实例时指定具体类型
  • 多类型参数用 <K, V> 等命名
  • 类型推断:Java 7+ 可用 new Box<>()
  • 泛型类保证类型安全,避免手动转型
  • 常见命名:T(类型)、E(元素)、K(键)、V(值)

📝 发现内容有误?点击此处直接编辑

← 上一篇 泛型最佳实践
下一篇 → 类型擦除
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库