在 Java 中,泛型方法是指在方法上单独声明泛型,而不依赖类是否是泛型类。下面从基础到常见写法给你说明。
修饰符 <泛型参数> 返回值类型 方法名(参数列表) {
// 方法体
}
关键点:
<T> 写在返回值前面<T, U>public class GenericMethodDemo {
// 泛型方法
public static <T> void print(T value) {
System.out.println(value);
}
public static void main(String[] args) {
print("Hello");
print(123);
print(3.14);
}
}
✅ 编译器会根据实参自动推断 T
public static <T> T getFirst(T[] array) {
return array[0];
}
使用:
String[] strs = {"a", "b"};
String s = getFirst(strs);
public static <K, V> void printPair(K key, V value) {
System.out.println(key + " = " + value);
}
public static <T extends Number> double toDouble(T num) {
return num.doubleValue();
}
✅ 只能传 Number 及其子类
public static <T extends Number & Comparable<T>> T max(T a, T b) {
return a.compareTo(b) > 0 ? a : b;
}
class Box<T> {
T value;
}
class Util {
public static <T> T get(T t) {
return t;
}
}
✅ 即使类不是泛型类,也可以有泛型方法
✅ 工具类(如 Collections)
public static <T> List<T> singletonList(T o)
✅ 返回值类型随参数变化
✅ 提高代码复用和类型安全
❌ 不能 new T()
❌ 不能 T.class
❌ 静态方法不能使用类的泛型(但可以用自己的泛型)
如果你有具体业务场景(比如:返回集合、排序、工厂方法),我可以帮你写更合适的泛型方法示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。