为了账号安全,请及时绑定邮箱和手机立即绑定

我不理解 java 中的通配符

我不理解 java 中的通配符

喵喔喔 2021-06-18 15:37:50
我有课:class Animal{    public void type(){        System.out.println("I am Animal");    }}class Dog extends Animal{    public void type(){        System.out.println("I am Dog");    }}class Cat extends Animal{    public void type(){        System.out.println("I am Cat");    }}class Haski extends Dog{    public void type(){        System.out.println("I am Haski");    }}我创建List有wildcards:List<? extends Animal> animalList = new ArrayList<Animal>();我知道我无法向animalList. 我在不同的书籍、互联网上的文章、视频课程中都读到过它,但我仍然不明白为什么?如果我们结animalList只包含对象,extends Animal为什么java不能添加任何对象并将其objects extends Animal强制转换为Animal?animalList.add(new Dog()); //cast dog to AnimalanimalList.add(new Cat()); //cast cat to Animal编译器有足够的信息 -objects extends Animal为什么它不能转换?编辑:所以我不明白。List<Animal> animalList1 = new ArrayList<Animal>();animalList.add(new Animal());animalList.add(new Dog());animalList.add(new Cat());animalList.add(new Haski());和List<? extends Animal> animalList有一种感觉,他们应该是一样的。但我感觉不到原理上的区别
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 166 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号