泛型中使用通配符有两种形式:子类型限定<? 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.getSecond().getName());
}