泛型是Java中的一种机制,它允许我们在编写类或方法时使用参数化类型。通过使用泛型,我们可以编写更加通用和类型安全的代码。
下面是一些使用泛型的常见场景和例子:
集合类:Java的集合框架中使用了泛型来增加类型安全性。例如,我们可以创建一个只接受特定类型元素的List:
javaCopyList<String> stringList = new ArrayList<>();
stringList.add("Hello");
stringList.add("World");// 编译器会阻止添加非String类型的元素
stringList.add(123);
自定义容器类:我们可以编写自己的泛型类来创建容器类,以存储各种类型的数据。例如,我们可以创建一个简单的泛型栈:
javaCopypublic class Stack<T> {private List<T> elements = new ArrayList<>();public void push(T element) {elements.add(element);}public T pop() {if (elements.isEmpty()) {throw new EmptyStackException();}return elements.remove(elements.size() - 1);}
}
使用示例:
javaCopyStack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);int num = stack.pop(); // 返回2
泛型方法:在方法中使用泛型可以使其更加灵活和通用。例如,我们可以编写一个通用的方法来比较两个对象是否相等:
javaCopypublic class Utils {public static <T> boolean isEqual(T obj1, T obj2) {return obj1.equals(obj2);}
}
使用示例:
javaCopyboolean result1 = Utils.isEqual("Hello", "Hello"); // 返回true
boolean result2 = Utils.isEqual(123, "123"); // 编译错误,类型不匹配
这些只是使用泛型的一些常见例子,泛型还有很多其他的用法,例如泛型限定、通配符和通配符上下界等。泛型使得代码更具可读性、可维护性和类型安全性,能够提高代码的重用性和扩展性。