温馨提示×

温馨提示×

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

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

泛型方法如何定义

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

在 Java 中,泛型方法是指在方法级别上定义泛型,而不是在类上定义。泛型方法可以出现在普通类泛型类中。


一、泛型方法的基本定义

✅ 语法格式

修饰符 <泛型参数> 返回类型 方法名(参数列表) {
    // 方法体
}

关键点:
<泛型参数> 必须写在返回类型之前


二、最简单的泛型方法示例

public class GenericMethodDemo {

    // 泛型方法
    public static <T> void print(T t) {
        System.out.println(t);
    }

    public static void main(String[] args) {
        print("Hello");
        print(123);
        print(3.14);
    }
}

✅ 说明:

  • <T>:定义泛型参数
  • T:可以是任意类型
  • 调用时由编译器自动推断类型

三、带返回值的泛型方法

public static <T> T getFirst(T[] array) {
    return array[0];
}

调用:

String[] strs = {"a", "b"};
String first = getFirst(strs);

四、多个泛型参数

public static <K, V> void printPair(K key, V value) {
    System.out.println(key + " = " + value);
}

调用:

printPair(1, "One");
printPair("name", 100);

五、泛型方法 + 泛型约束(上界)

1️⃣ 限制为某个类的子类

public static <T extends Number> double add(T a, T b) {
    return a.doubleValue() + b.doubleValue();
}

T 只能是 Number 或其子类(如 Integer, Double


2️⃣ 多个约束

<T extends Number & Comparable<T>>

⚠️ 注意:

  • 类只能有一个
  • 接口可以有多个

六、泛型方法与泛型类的区别

对比项 泛型类 泛型方法
泛型作用范围 整个类 仅当前方法
定义位置 类名后 返回类型前
是否需要类泛型 需要 不需要

示例对比

// 泛型类
class Box<T> {
    T value;
}

// 泛型方法
class Util {
    public static <T> T get(T t) {
        return t;
    }
}

七、泛型方法在普通类中使用(常见)

class Utils {
    public static <T> T defaultValue(T a, T b) {
        return a != null ? a : b;
    }
}

八、常见误区 ❌

❌ 错误写法:

public T test(T t) { }  // 如果类没有定义 T

✅ 正确写法:

public <T> T test(T t) { }

九、总结一句话

泛型方法 = 方法上加 <T>,写在返回值前,用于让方法自己决定类型。

如果你愿意,我也可以帮你对比 泛型方法 vs 通配符 ?,或者结合 集合 / 实际项目场景 来讲。

向AI问一下细节

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

AI