1 通配符的概念
虽然泛型类之间没有继承关系。但是可以用通配符来生成一中特殊的继承关系。
public static void printBuddies(Pair<Employee> p)
{
Employee first = p.getFirst();
Employee second = p.getSecond();
System.out.println(first.getName() + " and " + second.getName() + " are buddies.");
}
这个方法这样写,就可以把所有参数是Employee子类的泛型类都包含进去了。
public static void printBuddies(Pair<? extends Employee> p)
2 通配符对超类的限定
? super Manager
3 无限定的通配符
4 通配符捕获
public static <T> void swapHelper(Pair<T> p)
{
T t = p.getFirst();
p.setFirst(p.getSecond());
p.setSecond(t);
}
public static void swap(Pair<?> p)
{
swapHelper(p);
}
//这是错的
? t = p.getFirst(); // Error
p.setFirst(p.getSecond());
p.setSecond(t);