情境:
通过笼子装动物来解释泛型的up-case and down-case。
二个类:笼子(泛型)与动物
class 笼子 <T> { }
class 动物 { }
class 狮子 extends 动物 { }
class 蝴蝶 extends 动物 { }
对象:狮子、蝴蝶和若干不同类型的笼子
一只狮子 = new 狮子()
一只蝴蝶 = new 蝴蝶 ()
一只装狮子的笼子 = new 笼子<狮子>()
这只笼子很牢固,但不密集。
一只装蝴蝶的笼子 = new 笼子<蝴蝶>()
这只乱子很密集,但不牢固。
一只可以装所有动物的笼子 = new 笼子<动物>()
这个笼子不但牢固,而且密集。
一只可以装某种动物的笼子 = new 笼子 <? extends 动物> ()
这个笼子长得什么个样子,没人知道。它可能很牢固,可能很密集,也可能两者都有。
问题:
1.
一只装狮子的笼子 .add(一只狮子)
一只装蝴蝶的笼子.add(一只蝴蝶)
2.
一只可以装所有动物的笼子.add(一只狮子)
一只可以装所有动物的笼子.add(一只蝴蝶)
3.
一只可以装所有动物的笼子 = 一只装狮子的笼子 (is a)
一只可以装所有动物的笼子 = 一只装蝴蝶的笼子 (is a)
4.
一只可以装某种动物的笼子.add(一只狮子)
一只可以装某种动物的笼子.add(一只蝴蝶)
5.
一只可以装某种动物的笼子 = 一只装狮子的笼子 (is a)
一只可以装某种动物的笼子 = 一只装蝴蝶的笼子 (is a)
解答:
1。 显然成立。
2。显然成立。
3。都成立。
因为
(一只装狮子的笼子:很牢固,但不密集。
而 一只可以装所有动物的笼子:不但牢固,而且密集。)
所以
一只装狮子的笼子 is not a 可以装所有动物的笼子
证明完毕
另一语句证明类似
4。一只可以装某种动物的笼子 能装一个狮子或者一只蝴蝶吗?那请问你究竟是用来装什么动物先。如果你决定要装狮子,因为这只笼子只能装某一种,那对不起,你不能再装蝴蝶。反之亦然。竟然不知道能装什么,那就什么也不能装了。所以这两个语句都错误。
5。都成立。
因为
(一只装狮子的笼子:很牢固,但不密集。
而 一只可以装所有动物的笼子:可能很牢固,可能很密集,也可能两者都有。)
所以
一只装狮子的笼子 是一种 可以装某种动物的笼子
证明完毕
另一语句证明类似。
补充:
对于问题4,如果一只可以装某种动物的笼子什么都装不了,那它不就是废物了吗?不然,它可以应用于泛型函数中。
如:
void 喂笼中动物 (一只可以装某种动物的笼子) {
从 这只可以装某种动物的笼子 中取出 动物 并进行喂养
}
调用:
喂笼中动物 (一只装狮子的笼子)
喂笼中动物 (一只装蝴蝶的笼子)
分享到:
相关推荐
Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力...
泛型是Java语言的一个重要特性,首次出现在Java SE 1.5版本中。它的引入主要是为了解决在集合操作中类型安全性的问题,并...在现代Java程序中,泛型已经成为了一项不可或缺的技术,广泛应用于各种类库和应用程序中。
标题与描述均提到了“全面总结Java泛型--实例”,这表明文章旨在深入解析Java泛型的概念,并通过具体示例来展示其应用。Java泛型是Java编程语言的一个强大特性,它允许在编译时检查类型安全,并且所有的强制转换都是...
【Java基础】泛型方法 - 右撇子 - 博客频道 - CSDN.NET
这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。 在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”...
补充知识:泛型1---马克-to-win java视频的详细描述与介绍
java-泛型-面试题.docx
补充知识2 ---马克-to-win java视频泛型的详细描述与介绍
Java 实现泛型List的源码,基本实现了List接口的全部所有方法。欢迎大家发表自己的观点和建议。
Java 泛型是JDK 1.5引入的一项重要特性,极大地增强了代码的类型安全性和重用性。泛型允许我们在编程时指定容器(如集合)所存储的对象类型,从而在编译时期就能捕获类型错误,避免了运行时的ClassCastException。 ...
在Delphi编程环境中,DGL(The Delphi Generic Library)是一个非常重要的工具,它为开发者提供了类型安全、高效且易用的泛型容器和算法。这个库的设计灵感来源于C++的STL(Standard Template Library),使得Delphi...
由于书籍的作者是Maurice Naftalin和Philip Wadler,这两人都是在泛型和集合方面有着深入研究的专家,因此书中内容被期待会是权威和详尽的,为读者提供全面的Java泛型和集合知识。本书适合有一定Java基础并希望深入...
基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码....
day02【Collection、泛型】-笔记.md
《数学与泛型编程-高效编程的奥秘》个人阅读笔记
Java泛型是Java语言中的一种机制,用于在编译期检查类型安全。Java泛型的出现解决了Java早期版本中类型安全检查的缺陷。Java泛型的好处是可以在编译期检查类型安全,避免了运行时的ClassCastException。 Java泛型的...