java泛型程序设计——注意擦除后的冲突

【0】README

0.1) 本文描述+源代码均 转自 core java volume 1, 旨在理解 java泛型程序设计 的 注意擦除后的冲突 的知识;

1.1)当泛型类型被 擦除时, 无法创建引发冲突的条件。

  • 1.1.1)看个荔枝:
public class Pair<T>
{public boolean equals(T value) {return first.equals(value) && second.equals(value); }
}
  • 1.1.2)考虑一个 Pair《String》, 从概念上讲, 它有两个 equals 方法:
boolean equals(String) // defined in Pair<T>
boolean equals(Object) // inherited from Object
  • 1.1.3)方法擦除 boolean equals(T) 就是 boolean equals(Object) 与 Object.equals 发生冲突;
  • 1.1.4)补救方法是, 重新命名引发错误的方法;

1.2)泛型规范说明还提供另一个原则: 要想支持擦除的转换, 就需要强行限制一个类或类型变量不能同时成为两个接口类型的子类,而这两个接口是同一个接口的不同参数化。

  • 1.2.1)看个荔枝:(如下面的代码是非法的)
class Calendar implements Comparable<Calandar>{ ... }
class GregorianCalendar extends Calendar implements Comparable<GregorianCalendar>
{} // ERROR
  • 之所以错误: 是因为 GregorianCalendar 会实现 Comparable 和 Comparable《GregorianCalendar》, 这是同一接口的不同参数化;
  • 1.2.2)这一限制与 类型擦除的关系并不明确。 因为, 下列非泛型版本是合法的:
class Calendar implements Comparable {...}
class GregorianCalendar extends Calendar implements Comparable {...}
  • 其原因非常微妙, 有可能与 合成的 桥方法产生冲突;
  • 1.2.3)实现了 Comparable 的类可以获得一个 桥方法:
public int compareTo(Object other)
{return compareTo((X) other);
}
  • 对于不同类型的X 不能有两个这样的方法;

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

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

相关文章

java的Swing里怎么new一条线_java – 在JFrame上绘制一条线

我正在尝试使用图形2D绘制一条线,但然后该线出现在所有的线上JFrame中的其他组件因此使它们不可见.我该如何解决这个问题&#xff1f;这是代码&#xff1a;import javax.swing.*;import java.awt.*;import java.awt.geom.*;class Success extends JFrame{public Success(){JPan…

java –cp_Java –缺少字体–崩溃的应用程序!

java –cpEclipse MAT和Heaphero都是分析大型堆转储的流行Java工具。 最近&#xff0c;当我们尝试在Eclipse MAT中分析堆转储文件时遇到了一个有趣的问题。 工具因缺少字体crash而崩溃。 我们认为我们将与您分享发现的结果。 CompositeStrike.getStrikeForSlot&#xff08;&am…

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

【0】README 0.1&#xff09; 本文描述源代码均 转自 core java volume 1&#xff0c; 旨在理解 java泛型程序设计 的 泛型类型的继承原则 的知识&#xff1b; 【1】泛型类型的继承原则相关 1.1&#xff09;考虑一个类 Employee 和一个Employee子类 Manger &#xff0c; 问&a…

用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…