泛型是一种在编程中用于增加类型安全性和代码重用性的特性。它允许我们在定义类、接口或方法时使用类型参数,这样可以在使用时指定具体的类型。下面是一些使用泛型的常见场景和示例:
定义泛型类:
class Box<T> {
private T item;
public void setItem(T item) {
this.item = item;
}
public T getItem() {
return item;
}
}
在上面的示例中,Box<T>
是一个泛型类,T
是类型参数。通过使用泛型,可以在使用Box
类时指定具体的类型。例如:
Box<Integer> box = new Box<>();
box.setItem(10);
Integer item = box.getItem(); // 返回 10
定义泛型接口:
interface List<T> {
void add(T item);
T get(int index);
}
在上面的示例中,List<T>
是一个泛型接口,T
是类型参数。实现该接口时,可以指定具体的类型。例如:
class ArrayList<T> implements List<T> {
// 实现接口方法
}
ArrayList<String> list = new ArrayList<>();
list.add("Hello");
String item = list.get(0); // 返回 "Hello"
泛型方法:
class Utils {
public static <T> T getFirstElement(List<T> list) {
return list.get(0);
}
}
在上面的示例中,getFirstElement
是一个泛型方法,使用了类型参数T
。该方法可以接受任意类型的List
参数,并返回该列表的第一个元素。例如:
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
int firstElement = Utils.getFirstElement(list); // 返回 1
这些示例展示了泛型的基本用法,通过泛型可以编写更加通用和灵活的代码,提高代码的可重用性和类型安全性。