栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在泛型中具有扩展名的超级和晦涩有用的例子吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在泛型中具有扩展名的超级和晦涩有用的例子吗?

超级绑定示例

引入的

transferTo()
方法接受
Cage<? super T>
-持有的超类的Cage
T
。因为T是一个instanceof它的超类,它的确定,把
T
Cage<? super T>

public static class Cage<T extends Animal> {     private Set<T> pen = new HashSet<T>();    public void add(T animal) {        pen.add(animal);    }        public void transferTo(Cage<? super T> cage) {        cage.pen.addAll(this.pen);    }    public void showAnimals() {        System.out.println(pen);    }}

现在让我们看一下

<? super T>
实际操作:

public static class Animal {    public String toString() {        return getClass().getSimpleName();    }}public static class Rat extends Animal {}public static class Lion extends Animal {}public static class Cage<T extends Animal> {  }public static void main(String[] args) {    Cage<Animal> animals = new Cage<Animal>();    Cage<Lion> lions = new Cage<Lion>();    animals.add(new Rat()); // OK to put a Rat into a Cage<Animal>     lions.add(new Lion());    lions.transferTo(animals); // invoke the super generic method    animals.showAnimals();}

输出:

[Rat, Lion]

另一个重要的概念是:

Lion instanceof Animal // true

不是 真的

Cage<Lion> instanceof Cage<Animal> // false

如果不是这种情况,则此代码将编译:

Cage<Animal> animals;Cage<Lion> lions;animals = lions; // This assignment is not allowedanimals.add(rat); // If this executed, we'd have a Rat in a Cage<Lion>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/453317.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号