泛型中使用通配符有两种形式:子类型限定<? extends xxx>和超类型限定<? super xxx>。
(1)子类型限定
下面的代码定义了一个Pair<T>类,以及Employee,Manager和President类。
public class Pair<T> {
private T first;
private T second;
public Pair(T first, T second) {
this.first = first;
this.second = second;
}
public T getFirst() {
return first;
}
public T getSecond() {
return second;
}
public void setFirst(T newValue) {
first = newValue;
}
public void setSecond(T newValue) {
second = newValue;
}
}
class Employee {
private String name;
private double salary;
public Employee(String n, double s) {
name = n;
salary = s;
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
}
class Manager extends Employee {
public Manager(String n, double s) {
super(n, s);
}
}
<pre name="code" class="java">
class President extends Manager {
public President(String n, double s) {
super(n, s);
}
}
现在要定义一个函数可以打印Pair<Employee>
public static void printEmployeeBoddies(Pair<Employee> pair) {
System.out.println(pair.getFirst().getName() + ":" + pair.

本文介绍了Java泛型中的通配符使用,包括子类型限定<? extends xxx>和超类型限定<? super xxx>。子类型限定允许将更具体的类型作为参数传递,但不允许修改;超类型限定则允许设置值,但无法获取具体内容。此外,文章还讨论了<T extends Comparable<? super T>>的使用以及无限定通配符?的应用场景。

1604

被折叠的 条评论
为什么被折叠?



