通配符出错了

问题描述 投票:0回答:1

我正在测试通配符,并想做一个小程序

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();
    }
}

但它不起作用,有人知道出了什么问题吗?

java wildcard
1个回答
0
投票

这些实际上是 Box 类型

Box
Box<?>
Box<? extends asd>
Box<? super bcd>
Box<xxx>

因此,你的两个order方法实际上是重复的,你可以更改它们的名称,一个叫order1,另一个叫order2

© www.soinside.com 2019 - 2024. All rights reserved.