泛型类
泛型类在类名后声明类型参数,创建实例时指定具体类型。
泛型类定义
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
常见命名约定
| 类型参数 | 常见用途 |
|---|---|
| T | Type,任意类型 |
| E | Element,集合元素 |
| K | Key,键 |
| V | Value,值 |
| N | Number,数值 |
| R | Result,返回类型 |
泛型类应用示例
泛型容器
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(值)
📝 发现内容有误?点击此处直接编辑