温馨提示×

温馨提示×

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

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

java泛型如何定义

发布时间:2026-10-21 09:35:45 来源:亿速云 阅读:86 作者:小樊 栏目:编程语言

在 Java 中,泛型(Generics)用于在不指定具体类型的情况下编写可复用的代码,同时在编译期提供类型安全检查。下面从基本概念 → 定义方式 → 常见用法系统说明。


一、泛型的基本作用

  • 提高代码复用性
  • 避免强制类型转换
  • 编译期类型检查,减少 ClassCastException

二、泛型的定义方式

1️⃣ 泛型类(Generic Class)

语法:

class 类名<类型参数> {
    // 可使用类型参数
}

示例:

public class Box<T> {
    private T value;

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

    public T get() {
        return value;
    }
}

使用:

Box<String> box = new Box<>();
box.set("Hello");
String s = box.get();

2️⃣ 泛型接口(Generic Interface)

语法:

interface 接口名<T> {
    T method();
}

示例:

public interface Converter<T, R> {
    R convert(T t);
}

实现:

public class StringToIntConverter implements Converter<String, Integer> {
    public Integer convert(String s) {
        return Integer.parseInt(s);
    }
}

3️⃣ 泛型方法(Generic Method)

语法:

<类型参数> 返回类型 方法名(参数) {}

示例:

public class Util {
    public static <T> void print(T t) {
        System.out.println(t);
    }
}

调用:

Util.print("hello");
Util.print(123);

4️⃣ 多个类型参数

public class Pair<K, V> {
    private K key;
    private V value;
}

三、泛型通配符(Wildcards)

1️⃣ 无界通配符 ?

List<?> list;

2️⃣ 上界通配符 ? extends T

含义: 只能是 T 或其子类

List<? extends Number> list;

3️⃣ 下界通配符 ? super T

含义: 只能是 T 或其父类

List<? super Integer> list;

四、泛型的限制(重要)

❌ 不能 new T()

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

❌ 不能创建泛型数组

T[] arr = new T[10]; // 错误

❌ 泛型不能用于基本类型

List<int> list; // 错误
List<Integer> list; // 正确

❌ 运行时类型擦除(Type Erasure)

List<String> 和 List<Integer>
运行时都是 List

五、常见使用场景

  • 集合类(List<T>, Map<K,V>)
  • 工具类
  • 回调接口
  • 通用算法

如果你愿意,我可以:

  • 给你对比 C++ 模板和 Java 泛型
  • 讲泛型擦除的底层原理
  • 帮你手写一个泛型实战例子

你想深入哪一块?

向AI问一下细节

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

AI
助
手