我正在测试通配符,并想做一个小程序
public class WildCards {
public static void main(String[] args) {
order(new Box<Animal>());
order(new Box<Human>());
order(new Box<Mammal>());
}
public static void order(Box<? extends Mammal> box) {
System.out.println(box.getContent() + " is a Mammal.");
}
public static void order(Box<? super Mammal> box) {
System.out.println("Mammal is a " + box.getContent());
}
}
class Thing extends Object {}
class Creature extends Thing {}
class Animal extends Creature {}
class Mammal extends Animal {}
class Primate extends Mammal {}
class Gorilla extends Primate {}
class Human extends Primate {}
class Box<T extends Thing> {
T object;
String getContent() {
return new T().getClass().getName();
}
}
但它不起作用,有人知道出了什么问题吗?
这些实际上是 Box 类型
Box
Box<?>
Box<? extends asd>
Box<? super bcd>
Box<xxx>
因此,你的两个order方法实际上是重复的,你可以更改它们的名称,一个叫order1,另一个叫order2