温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

泛型类怎么创建

发布时间:2026-07-15 11:40:03 来源:亿速云 阅读:98 作者:小樊 栏目:编程语言

Java 中,泛型类是通过在类名后面加上 类型参数 来创建的。下面从基础到常见用法一步步说明。


一、最简单的泛型类示例

// 定义一个泛型类
public class Box<T> {
    private T value;

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

    public T getValue() {
        return value;
    }
}

使用方式:

Box<String> stringBox = new Box<>();
stringBox.setValue("Hello");
String s = stringBox.getValue();

Box<Integer> intBox = new Box<>();
intBox.setValue(100);
Integer i = intBox.getValue();

T 只是一个占位符,使用时再指定具体类型。


二、多个类型参数的泛型类

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", 18);

三、泛型类中的常见限制(很重要)

1️⃣ 不能直接 new T()(不能实例化泛型)

❌ 错误写法:

T obj = new T(); // 编译错误

✅ 正确做法(通过反射):

public class Box<T> {
    private T value;

    public Box(Class<T> clazz) throws Exception {
        this.value = clazz.getDeclaredConstructor().newInstance();
    }
}

2️⃣ 泛型不能用在静态变量上

❌ 错误:

private static T data; // 编译错误

✅ 静态方法可以自己定义泛型:

public static <T> T getDefault() {
    return null;
}

四、有界泛型(限制类型)

上限(extends)

// T 必须是 Number 或其子类
public class Calculator<T extends Number> {
    public double add(T a, T b) {
        return a.doubleValue() + b.doubleValue();
    }
}

✅ 合法:

Calculator<Integer> c1 = new Calculator<>();
Calculator<Double> c2 = new Calculator<>();

❌ 不合法:

Calculator<String> c3 = new Calculator<>(); // 编译错误

五、Java 中泛型的本质(了解)

  • 泛型只在编译期存在
  • 运行时是 类型擦除(Type Erasure)
  • Box<String>Box<Integer> 运行时都是 Box

六、对比:普通类 vs 泛型类

普通类 泛型类
类型固定 类型灵活
不安全强制转换 编译期类型检查
重复写多个类 一个类适配多种类型

如果你愿意,我也可以给你讲:

  • ✅ 泛型接口怎么写
  • ✅ 泛型方法(非泛型类中使用)
  • ✅ Kotlin 中的泛型
  • ✅ 为什么 Java 泛型这么“别扭”

你是在学 JavaC#,还是别的语言?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI