在 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);
public static <T extends Number> double add(T a, T b) {
return a.doubleValue() + b.doubleValue();
}
✅ T 只能是 Number 或其子类(如 Integer, Double)
<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 通配符 ?,或者结合 集合 / 实际项目场景 来讲。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。