使用List,您知道所拥有的绝对是动物列表。实际上,所有这些都不一定完全是“动物”,它们也可以是派生类型。例如,如果您有动物清单,那么一对夫妇可能是山羊,其中一些可能是猫,等等,对吗?

例如,这是完全有效的:

List aL= new List();

aL.add(new Goat());

aL.add(new Cat());

Animal a = aL.peek();

a.walk(); // assuming walk is a method within Animal

当然,以下将不会是有效的:

aL.peek().meow(); // we can't do this, as it's not guaranteed that aL.peek() will be a Cat

使用List extends Animal>,您可以声明要处理的列表的类型。

例如:

List extends Animal> L;

实际上,这不是 L可以容纳的对象类型的声明。这是关于L可以引用哪些列表的声明。

例如,我们可以这样做:

L = aL; // remember aL is a List of Animals

但是现在,所有编译器都知道L是它是[Animal或Animal的子类型]的列表

因此,以下内容无效:

L.add(new Animal()); // throws a compiletime error

因为据我们所知,L可能引用的是山羊列表-我们无法在其中添加动物。

原因如下:

List gL = new List(); // fine

gL.add(new Goat()); // fine

gL.add(new Animal()); // compiletime error

在上面,我们试图将动物铸造为山羊。那是行不通的,因为这样做之后,如果我们试图让Animal像山羊一样做“头撞”怎么办?我们不一定知道动物可以做到这一点。

java泛型基类list_泛型:列表?扩展Animal与List Animal相同吗?相关推荐

  1. java中基类是什么意思

    基类就是父类,派生类就是子类: 其中在面向对象的五大基本原则中:里氏替换原则 只有当子类能够替换基类时,才能保证系统在运行期内识别子类,这是保证继承复用的机制. 基类替换为子类的行为不会发生任何变化, ...

  2. java 线程 基类_关于Linux 系统下 C++ 的多线程基类 Thread

    最近在Linux 下用C++做的东西,原来是使用"多进程"方式实现,现在随着工程的增大,"多进程"的"变量共享"问题已经十分突出了,虽然可以 ...

  3. java 虚基类_C++中虚基类与抽象类的简单理解。

    虚基类   是相对于它的派生类而言的,它本身可以是一个普通的类. 只有它的派生类虚继承它的时候,它才称作虚基类,如果没有虚继承的话,就称为基类.比如类B虚继承于类A,那类A就称作类B的虚基类,如果没有 ...

  4. java 泛型 get()_Java泛型,get类的泛型参数

    类型安全的,但是可行的方式是通过类< T>令牌"编译器可以看到它": public abstract class RootProcessor { Class clazz ...

  5. java派生类_我可以使派生类从Java的基类继承派生成员...

    我有看起来像这样的代码: public class A { public void doStuff() { System.out.print("Stuff successfully done ...

  6. java 虚基类_重拾C++之虚函数和虚基类以及抽象类

    一.引言 好久没接触过C++了,今天突然要用一点感觉号蛋疼,用惯了python感觉C++一点都不会了. 声明了一个类的对象居然用这种方法,脑子绝对是被驴(python)踢了 class A{ ... ...

  7. 17、Java 的基类(Object 类)的方法介绍

    文章目录 一.前言 二.equals() 和[==] (1) == (2) equals (3) 比较两个字符数组的内容是否一样 (4) String 类重写 equals (5) Integer 类 ...

  8. boost源码剖析之:泛型指针类any之海纳百川(rev#2)

    boost源码剖析之:泛型指针类any之海纳百川(rev#2) 刘未鹏 C++的罗浮宫(http://blog.csdn.net/pongba) 动机 C++是强类型语言,所有强类型语言对类型的要求都 ...

  9. Java记录 -22- Java的基类Object详解

    Java的基类Object详解 Java的JDK文档要经常查阅使用,最好查看英文的文档. Oracle官方在线 Java API Specifications http://www.oracle.co ...

最新文章

  1. 同为Java开发:有了这些Java项目经历,面大厂稳了!
  2. 代码实践 | CVPR2020——AdderNet(加法网络)迁移到检测网络(代码分享)
  3. 一文读懂 @Decorator 装饰器——理解 VS Code 源码的基础
  4. mysql 锁 会话_MySQL会话锁等待关系原理
  5. 获取treeview中当前鼠标所指的节点treenode 。
  6. duilib获取字符串的像素长
  7. java 数据类型分为_JAVA中分为基本数据类型及引用数据类型
  8. java去掉图片边框颜色_sharp 去除图片边框
  9. EfficientNet细节
  10. python是什么意思啊-星号*在Python中是什么意思?
  11. WinCE6.0+ S3C6410 IIC驱动源码学习
  12. java面试题之什么是ThreadLocal?底层如何实现的?
  13. 如何记录流水账,打开图表查看账目
  14. 【Photoshop】证件照换底色
  15. echarts饼状图显示百分比
  16. 我的移植经验之谈,简单的Rom移植教程——附移植JoyOS实例
  17. 毕业或者想转行做c++服务端开发的时候都很迷茫不知道从哪里开始学习?
  18. 关于LTE网络质量的参数
  19. java 对接微信公众号(二)获取关注取关事件/用户回复消息
  20. 「视频」重磅 | Magic Leap再发Demo,凯文·凯利万字长文揭秘

热门文章

  1. nodejs全局安装和本地安装的区别
  2. RHEL7.0 DNS服务配置
  3. Servlet基本_オブジェクトのスコープ
  4. 实现Android和PC之间的蓝牙通信
  5. 遍历 List 之效率
  6. 机器学习与数学分析(二)
  7. linux centos7开启IP转发、路由转发解决docker 端口映射 及外部无法访问问题
  8. 启动HBase抛出org.apache.hadoop.hbase.ClockOutOfSyncException异常:hmaster正常,节点hregionserver启动失败
  9. hdfs yarn hbase pid文件被删除解决办法:修改hadoop-daemon.sh yarn-daemon.sh hbase-daemon.sh中PID_DIR存储路径
  10. 【收藏】Windows编译安装Redis 6.0