商城首页欢迎来到中国正版软件门户

您的位置:首页 >Java泛型类定义与使用详解

Java泛型类定义与使用详解

  发布于2026-02-20 阅读(0)

扫一扫,手机访问

泛型类通过类型参数(如T)实现类型安全和代码复用,例如Box<T>可指定存储类型,编译器在实例化时进行类型检查,避免运行时错误;支持多参数如Pair<K,V>,并可用extends限定上界确保类型约束,提升灵活性与安全性。

如何在Java中定义和使用泛型类

在Java中,泛型类允许你编写可以处理多种数据类型的类,同时保持类型安全。通过使用泛型,你可以避免运行时的类型转换错误,并提升代码的可重用性。

定义泛型类

定义一个泛型类时,在类名后添加类型参数,通常用尖括号⟨T⟩包围。这里的T代表“Type”,也可以使用其他字母如EKV等。

例如,定义一个简单的泛型容器类:

public class Box<T> {
    private T value;

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

    public T get() {
        return value;
    }
}

这里Box<T>表示这个类可以存储任何类型的对象,具体类型在创建实例时指定。

使用泛型类

创建泛型类的实例时,需要指定具体的类型。编译器会根据你传入的类型自动进行类型检查。

示例:创建一个只存储字符串的盒子

Box<String> stringBox = new Box<>();
stringBox.set("Hello World");
String content = stringBox.get(); // 无需强制转换

如果你尝试放入非字符串类型:

stringBox.set(123); // 编译错误!

这会在编译阶段就被发现,避免了运行时错误。

使用多个类型参数

泛型类可以支持多个类型参数。比如定义一个键值对容器:

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);
System.out.println(pair.getKey() + ": " + pair.getValue());

限定类型参数

有时你希望泛型类只能接受特定类型的子类。可以通过extends关键字设置上界。

例如,只允许数字类型(Number的子类):

public class NumberBox<T extends Number> {
    private T number;

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

    public double getDoubleValue() {
        return number.doubleValue();
    }
}

这样就只能传入IntegerDoubleNumber的子类:

NumberBox<Integer> intBox = new NumberBox<>();
intBox.set(100);
System.out.println(intBox.getDoubleValue()); // 输出 100.0

但传入String会报错:

NumberBox<String> strBox = new NumberBox<>(); // 编译错误!

基本上就这些。泛型类让Java代码更灵活、更安全。只要在定义时明确类型参数,使用时就能享受自动类型检查和无需强转的便利。

本文转载于:互联网 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注