Java泛型是一种编程特性,它允许在类、接口和方法中定义类型参数,从而提供类型安全。以下是Java泛型的一些基本用法:
泛型类
定义泛型类时,在类名后面使用尖括号`
public class MyGeneric{ private T data;public void setData(T data) {this.data = data;}public T getData() {return data;}}
泛型方法
定义泛型方法时,在方法返回值前使用尖括号`
public class GenericMethods {public staticT firstElement(T[] array) { return array;}}
泛型实例化
实例化泛型类时,需要指定类型参数的具体值。
MyGenericmyGeneric = new MyGeneric<>(); myGeneric.setData("Hello, world!");String str = myGeneric.getData();
泛型参数推断
Java编译器可以根据方法调用或返回值自动推断泛型参数的类型。
public class GenericInference {public staticvoid print(T item) { System.out.println(item);}public static void main(String[] args) {print("Hello"); // 编译器推断T为String类型print(123);// 编译器推断T为Integer类型}}

泛型与通配符
Java泛型支持通配符`?`,用于表示未知类型。
public class Wildcards {public static void printList(List<?> list) {for (Object item : list) {System.out.println(item);}}}
注意事项
泛型类型参数必须是引用类型,不能是基本数据类型。
泛型类不能继承`Exception`类。
泛型数组不能直接创建,因为泛型擦除后类型信息丢失。
静态方法中不能使用泛型类型参数。
泛型类中不应重写`equals`方法,避免与`Object`类的`equals`方法冲突。
示例代码
// 泛型类示例public class Pair{ 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;}}// 泛型方法示例public class GenericUtility {public staticT max(T a, T b) { return a.compareTo(b) > 0 ? a : b;}}
以上是Java泛型的一些基本用法。泛型提供了一种类型安全的方式来处理不同的数据类型,同时增加了代码的复用性和灵活性
