Skip to content
On this page

泛型

声明

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),运行时不保留具体实参类型信息。instanceofnew T() 等受限;需类型令牌时常用 Class<T> 或模式 API。

通配符

  • ? extends T:上界,生产者(只读取出为 T 或其子类型)。
  • ? super T:下界,消费者(可写入 T 及其子类)。

PECS:Producer Extends, Consumer Super(Effective Java)。误用 List<Object>List<?> 在赋值与 API 设计上有显著差异。

推断

钻石运算符 <> 与链式推断减少冗余;复杂链路过长时显式类型提升可读性。

技术文库