“Java泛型” 得所憩,落日美酒聊共挥
Java泛型是JDK 1.5引入的一个特性,它提供了编译时类型安全检测机制。泛型的本质是参数化类型,也就是说,所操作的数据类型被指定为一个参数。
泛型的主要目的是支持在类和方法中的数据类型参数化,从而实现更好的类型安全和更高的代码复用性。
泛型的基本使用方法是在类名后面或者方法名后面加上尖括号,里面放上类型参数。例如:
public class Box<T> {
// 泛型字段
private T t;
// 泛型方法
public T get() {
return t;
}
public void set(T t) {
this.t = t;
}
}
public class Main {
public static void main(String[] args) {
Box<Integer> box = new Box<>();
box.set(10);
System.out.println(box.get());
Box<String> box2 = new Box<>();
box2.set("Hello World");
System.out.println(box2.get());
}
}
在上述代码中,Box<T>
是一个泛型类,T
是类型参数。在Main
类的main
方法中,我们创建了两个Box
实例,一个存储Integer
类型,一个存储String
类型,这样就实现了类型的参数化。
泛型还支持多个类型参数,例如:
public class Pair<T, U> {
private T first;
private U second;
public Pair(T first, U second) {
this.first = first;
this.second = second;
}
public T getFirst() {
return first;
}
public U getSecond() {
return second;
}
}
public class Main {
public static void main(String[] args) {
Pair<String, Integer> pair = new Pair<>("Hello", 10);
System.out.println(pair.getFirst() + " " + pair.getSecond());
}
}
在这个例子中,Pair<T, U>
是一个拥有两个类型参数的泛型类,可以存储两种不同类型的数据。
Java泛型也支持在接口上使用,例如:
public interface Generator<T> {
T next();
}
public class Main {
public static void main(String[] args) {
Generator<String> stringGenerator = () -> "Hello World";
System.out.println(stringGenerator.next());
}
}
在这个例子中,Generator<T>
是一个接口,它使用了泛型。然后我们创建了一个匿名内部类来实现这个接口,并指定了泛型类型为String
。
Java泛型也支持通配符,例如:
public class Collection<T> {
private List<T> list = new ArrayList<>();
public void add(T element) {
list.add(element);
}
public void print(Collection<?> collection) {
for (Object obj : collection.list) {
System.out.println(obj);
}
}
}
public class Main {
public static void main(String[] args) {
Collection<String> strings = new Collection<>();
strings.add("Hello");
strings.add("World");
Collection<Integer> integers = new Collection<>();
integers.add(1);
integers.add(2);
strings.print(st
评论已关闭