泛型
声明
java
class Box<T> {
private T value;
void set(T v) { value = v; }
T get() { return value; }
}
方法泛型:static <T> List<T> of(T a) { ... }
类型擦除
泛型在字节码中擦除到上界(无界则到 Object),运行时不保留具体实参类型信息。instanceof 与 new T() 等受限;需类型令牌时常用 Class<T> 或模式 API。
通配符
? extends T:上界,生产者(只读取出为T或其子类型)。? super T:下界,消费者(可写入T及其子类)。
PECS:Producer Extends, Consumer Super(Effective Java)。误用 List<Object> 与 List<?> 在赋值与 API 设计上有显著差异。
推断
钻石运算符 <> 与链式推断减少冗余;复杂链路过长时显式类型提升可读性。