`
7tianle
  • 浏览: 95178 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA中泛型的up-case 和 down-case

阅读更多


情境:
通过笼子装动物来解释泛型的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-泛型课件-泛型课件

    泛型是Java语言的一个重要特性,首次出现在Java SE 1.5版本中。它的引入主要是为了解决在集合操作中类型安全性的问题,并...在现代Java程序中,泛型已经成为了一项不可或缺的技术,广泛应用于各种类库和应用程序中。

    全面总结Java泛型--实例

    标题与描述均提到了“全面总结Java泛型--实例”,这表明文章旨在深入解析Java泛型的概念,并通过具体示例来展示其应用。Java泛型是Java编程语言的一个强大特性,它允许在编译时检查类型安全,并且所有的强制转换都是...

    【Java基础】泛型方法 - 右撇子 - 博客频道 - CSDN.NET

    【Java基础】泛型方法 - 右撇子 - 博客频道 - CSDN.NET

    Generic_2(泛型类-泛型方法-泛型接口-泛型限定(上限)

    这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。 在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”...

    补充知识:泛型1---马克-to-win java视频

    补充知识:泛型1---马克-to-win java视频的详细描述与介绍

    java-泛型-面试题.docx

    java-泛型-面试题.docx

    补充知识:泛型2---马克-to-win java视频

    补充知识2 ---马克-to-win java视频泛型的详细描述与介绍

    Java 实现泛型List

    Java 实现泛型List的源码,基本实现了List接口的全部所有方法。欢迎大家发表自己的观点和建议。

    java中的泛型-详细

    Java 泛型是JDK 1.5引入的一项重要特性,极大地增强了代码的类型安全性和重用性。泛型允许我们在编程时指定容器(如集合)所存储的对象类型,从而在编译时期就能捕获类型错误,避免了运行时的ClassCastException。 ...

    Delphi泛型库--DGL

    在Delphi编程环境中,DGL(The Delphi Generic Library)是一个非常重要的工具,它为开发者提供了类型安全、高效且易用的泛型容器和算法。这个库的设计灵感来源于C++的STL(Standard Template Library),使得Delphi...

    Java泛型和集合-英文版

    由于书籍的作者是Maurice Naftalin和Philip Wadler,这两人都是在泛型和集合方面有着深入研究的专家,因此书中内容被期待会是权威和详尽的,为读者提供全面的Java泛型和集合知识。本书适合有一定Java基础并希望深入...

    基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip

    基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码....

    day02【Collection、泛型】-笔记.md

    day02【Collection、泛型】-笔记.md

    《数学与泛型编程-高效编程的奥秘》个人阅读笔记

    《数学与泛型编程-高效编程的奥秘》个人阅读笔记

    很好的Java泛型的总结

    Java泛型是Java语言中的一种机制,用于在编译期检查类型安全。Java泛型的出现解决了Java早期版本中类型安全检查的缺陷。Java泛型的好处是可以在编译期检查类型安全,避免了运行时的ClassCastException。 Java泛型的...

Global site tag (gtag.js) - Google Analytics