java泛型程序设计——泛型类型的继承原则

【0】README

0.1) 本文描述+源代码均 转自 core java volume 1, 旨在理解 java泛型程序设计 的 泛型类型的继承原则 的知识;


【1】泛型类型的继承原则相关

1.1)考虑一个类 Employee 和一个Employee子类 Manger , 问: Pair 是 Pair 的一个子类吗?答案是: “不是的”;
1.2)看个荔枝:(下面的代码将不能编译)

Manager[] m1 = ...;
Pair<Employee> results = ArrayAlg.minmax(m1); // ERROR
minmax  方法返回 Pair<Manager> ,而不是 Pair<Employee> ,并且这样的赋值是不合法的;

这里写图片描述
Annotation)

  • A1)可以将一个 Manger[] 数组赋给一个 Employee[] 的 数组;
Manager[] m1 = {ceo , cfo};
Employee[] e1 = m1; //OK
  • 然而, 数组带有特别的保护, 如果试图将一个 低级别的雇员存储到 e1[0], 那么虚拟机会 抛出 ArrayStoreException 异常;
  • A2)永远可以将参数化类型转换为一个原始类型: 如, Pair《Employee》 是原始类型 Pair 的一个子类型;
Pair< Manger> m1 = new Pair<>(ceo, cfo);
Pair m2 = m1; //OK
r2.setFirst(new File("...")) // only a compile-time warning
  • 当使用 getFirst 获得外来对象并赋给 Manager变量时, 与通常一样, 会抛出 ClassCastExcetpion 异常。
  • A3)最后泛型类可以扩展或 实现 其他的泛型类: 如, ArrayList《T》 类实现 List《T》 接口。 这意味着, 一个 ArrayList《Manager》 可以被转换为一个 List《Manager》。 但是, 如前面所见, 一个 ArrayList《Manager》 不是一个 ArrayList《Employee》List《Employee》
  • 下图展示了它们的联系:
    这里写图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331804.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用java代码写美国时间_如何衡量Java代码所用的时间?

本问题已经有最佳答案&#xff0c;请猛点这里访问。我需要分析Java中的一些算法的复杂性。为此&#xff0c;我计划提供大量的输入&#xff0c;并测量Java实现所花费的时间。检查某些代码行之间的时间最精确和准确的方法是什么&#xff1f;我需要精确到毫秒…不完全是&#xff0…

reactor使用方法_Project Reactor展开方法

reactor使用方法最近&#xff0c;我的一位同事向我介绍了Project Reactor类型的expand运算符&#xff0c;在这篇文章中&#xff0c;我想介绍几种使用它的方式。 展开分页结果 考虑在名为City的模型上基于Spring Data的存储库&#xff1a; import org.springframework.data.jpa…

java泛型程序设计——通配符类型+通配符的超类型限定

【0】README 0.1&#xff09; 本文描述源代码均 转自 core java volume 1&#xff0c; 旨在理解 java泛型程序设计 的 通配符类型通配符的超类型限定 的知识&#xff1b; 【1】通配符类型相关 1.1&#xff09;通配符类型&#xff1a; Pair < ? extends Employee> 表示…

java 延迟初始化_Java并发编程——延迟初始化占位类模式

——仅作笔记使用&#xff0c;内容多摘自《java并发编程实战》在并发编程中&#xff0c;如果状态变量仅在单个线程中初始化和使用&#xff0c;自然是线程安全的&#xff0c;但一旦涉及到线程间的数据交互&#xff0c;如何声明一个用于多线程的单例状态变量才是安全的呢&#xf…

log4j 程序日志_Log4j错误–减慢您的应用程序

log4j 程序日志最近&#xff0c;我们正在对流行的SaaS应用程序进行故障排除。 该应用程序间歇性地变慢。 要从问题中恢复&#xff0c;必须重新启动应用程序。 在高流量期间&#xff0c;此应用有时会变慢。 有时在交通繁忙时也是如此。 没有凝聚力模式。 这类应用程序变慢并重新…

java泛型程序设计——无限定通配符+通配符捕获

【0】README 0.1&#xff09; 本文描述源代码均 转自 core java volume 1&#xff0c; 旨在理解 java泛型程序设计 的 无限定通配符通配符捕获 的相关知识&#xff1b; 【1】无限定通配符相关 1.1&#xff09;无限定通配符&#xff1a; 如Pair< ?>&#xff1b; 1.1.1…

java方法2数据求和_Leet Code 2 Add Two Numbers - 链表表示的两个数求和 - Java

给定两个链表表示的非负整数&#xff0c;每个节点存储一位数&#xff0c;各位数以逆序存储。将两个数相加&#xff0c;以链表形式返回结果。例如&#xff1a;输入&#xff1a;(2 -> 4 -> 3) (5 -> 6 -> 4)输出&#xff1a;7 -> 0 -> 8/*** Definition for s…

java泛型程序设计——反射和泛型

【0】README 0.1&#xff09; 本文描述源代码均 转自 core java volume 1&#xff0c; 旨在理解 java泛型程序设计 的 反射和泛型 的相关知识&#xff1b; 【1】反射和泛型相关 1.1&#xff09;现在&#xff0c; Class类是泛型的&#xff0c; 如 String.class 实际上是一个 C…

kafka异步发送数据_在Kafka上异步发送数据

kafka异步发送数据对于一个项目&#xff0c;我试图记录用户的基本交易&#xff0c;例如添加和删除一个项目以及多种类型的项目&#xff0c;并为每笔交易向kafka发送一条消息。 日志机制的准确性不是至关重要的&#xff0c;在kafka服务器停机的情况下&#xff0c;我不希望它阻止…

java按钮权限控制_详解Spring Security 中的四种权限控制方式

Spring Security 中对于权限控制默认已经提供了很多了&#xff0c;但是&#xff0c;一个优秀的框架必须具备良好的扩展性&#xff0c;恰好&#xff0c;Spring Security 的扩展性就非常棒&#xff0c;我们既可以使用 Spring Security 提供的方式做授权&#xff0c;也可以自定义授…

aws 数据库迁移_AWS Loft的数据库周

aws 数据库迁移这是我的笔记&#xff1a; https://databaseweekoctober2019sf.splashthat.com AWS上的数据库&#xff1a;合适工作的合适工具 在许多此类谈话中&#xff0c;我并没有做过深刻的记录。 我正在关注重点。 PostgreSQL排在MySQL之后。 AWS上8种类型的数据库&…

java异常——异常分类+声明已检查异常+如何抛出异常+自定义异常类

【0】README 0.1&#xff09; 本文描述源代码均 转自 core java volume 1&#xff0c; 旨在理解 java异常——异常分类声明已检查异常如何抛出异常自定义异常类 的相关知识&#xff1b; 0.2&#xff09;异常处理的任务&#xff1a; 就是将控制权从错误产生的地方转移给能够处…

quarkus_Quarkus入门

quarkusQuarkus – 一个针对OpenJDK HotSpot和GraalVM量身定制的Kubernetes本机Java堆栈&#xff0c;它是从最佳Java库和标准中精制而成的。 –是一个容器优先的框架&#xff0c;针对快速启动时间和低内存消耗进行了优化。 该框架基于许多流行的Java库构建&#xff0c;并且为构…

java异常——捕获异常+再次抛出异常与异常链

【0】README 0.1&#xff09; 本文描述源代码均 转自 core java volume 1&#xff0c; 旨在理解 java异常——捕获异常再次抛出异常与异常链 的相关知识&#xff1b; 【1】捕获异常相关 1.1&#xff09;如果某个异常发生的时候没有再任何地方进行捕获&#xff0c; 那程序就会…

java 类似xamarin_xamarin android如何将Java.Lang.Object类型转成C#类型

问题起源其实这个标题也可以换一个更准确一点&#xff0c;因为我遇到的问题是&#xff1a;xamarin android中的Class继承了Java.Lang.Object &#xff0c;将json序列化成c#类型时发现无法赋值&#xff0c;序列化的格式没问题&#xff0c;但是Class的属性值没有复制成功。xamari…

java异常—— finally 子句+带资源的 try语句

【0】README 0.1&#xff09; 本文描述源代码均 转自 core java volume 1&#xff0c; 旨在理解 java异常—— finally 子句带资源的 try语句 的相关知识&#xff1b; 【1】 finally 子句相关 1.1&#xff09;产生资源回收问题&#xff1a;当代码抛出一个异常时&#xff0c; …

jep290涉及jdk版本_JDK 13中的JEP 355文本块

jep290涉及jdk版本JDK 13已于2019年9月17日上线GA&#xff0c; 此处列出了重要的新功能。 新功能之一是“文本块”。 这样可以轻松地编写多行字符串&#xff0c;而不必在拆分为不同行的同时进行串联。 让我们快速了解创建多行字符串的不同方式&#xff1a; String aBlock &q…

java单例注册表_Java单例模式(Singleton)

单例模式主要用于&#xff1a;有一些对象我们只需要一个&#xff0c;比如&#xff1a;线程池、缓存、对话框、处理偏好设置、注册表对象、日志对象以及配置文件对象、数据库连接对象等等。单例模式常用于管理共享资源&#xff0c;例如&#xff1a;数据库连接或者线程池。Java S…

java异常——分析堆栈跟踪元素+使用异常机制的技巧

【0】README 0.1&#xff09; 本文描述源代码均 转自 core java volume 1&#xff0c; 旨在理解 java异常——分析堆栈跟踪元素使用异常机制的技巧 的相关知识&#xff1b; 【1】分析堆栈跟踪元素相关 1.1&#xff09;堆栈跟踪&#xff1a; 它是一个方法调用过程的列表&#…

jdk8 npe_JDK 14中更好的NPE消息

jdk8 npe我的2019年3月博客文章“ Java会出现更好的默认NullPointerException消息吗&#xff1f; ”的撰写是为了获得更好的NullPointerException消息的JEP 草案尚未针对特定的JDK版本。 此后&#xff0c;该JEP草案成为JEP 14的 目标 JEP 358&#xff08;“ Helpful NullPointe…