java泛型类的使用语法

Java泛型类通过类型参数(如)实现类型安全和代码复用,支持多类型参数、继承泛型、通配符边界限制,编译期检查并在运行时擦除类型信息。

Java泛型类允许在定义类时使用类型参数,使类可以适用于多种数据类型,同时在编译期提供类型安全检查。使用泛型类可以避免强制类型转换,提升代码的可重用性和健壮性。

泛型类的基本语法

定义一个泛型类时,在类名后加上尖括号 ,其中 T 是类型参数(Type Parameter),代表未知类型。你也可以使用其他字母如 等,但通常:

  • 表示 Type
  • 表示 Element(常用于集合)
  • 表示 Key, 表示 Value(常用于 Map)

示例:定义一个简单的泛型类

class Box { private T value; public void setValue(T value) { this.value = value; } public T getValue() { return value; } }

使用这个泛型类时,指定具体的类型:

Box stringBox = new Box(); stringBox.setValue("Hello"); String content = stringBox.getValue(); // 无需强转

多个类型参数

一个泛型类可以有多个类型参数,用逗号分隔。

class Pair { private T first; private U second; public Pair(T first, U second) { this.first = first; this.second = second; } public T getFirst() { return first; } public U getSecond() { return second; } }

使用方式:

Pair pair = new Pair("age", 25); String key = pair.getFirst(); Integer val = pair.g

etSecond();

泛型类的继承与实现

泛型类可以被继承,子类可以选择保留泛型或指定具体类型。

  • 继承时继续使用泛型:
  • class SpecialBox extends Box { }
  • 继承时固定类型:
  • class StringBox extends Box { }

实现泛型接口也类似:

interface Container { void add(T item); T get(); } class MyContainer implements Container { private T item; public void add(T item) { this.item = item; } public T get() { return item; } }

类型通配符与边界限制

在使用泛型类时,可以使用通配符 > 表示未知类型,还可通过 extendssuper 设置边界。

  • 上界通配符:Box extends Number> —— 接受 Number 及其子类,如 Integer、Double
  • 下界通配符:Box super Integer> —— 接受 Integer 及其父类,如 Number、Object

示例方法接收特定范围的泛型类:

void process(Box extends Number> box) { Number num = box.getValue(); System.out.println(num.doubleValue()); }

基本上就这些。掌握泛型类的定义和使用,能写出更灵活、安全的 Java 代码。注意类型擦除是 Java 泛型的底层机制,运行时泛型信息会被擦除,仅用于编译期检查。不复杂但容易忽略。