为什么我的原始类型参数方法不覆盖包装器类型参数超类方法?

2023-11-23

public class WrapperClasses{
    void overloadedMethod(Number N){
        System.out.println("Number Class Type");
    }

    void overloadedMethod(Double D){
        System.out.println("Double Wrapper Class Type");
    }

    void overloadedMethod(Long L){
        System.out.println("Long Wrapper Class Type");
    }

    public static void main(String[] args){
        int i = 21;
        WrapperClasses wr = new WrapperClasses();

        //wr.overloadedMethod(i);
    }
}

class mine extends WrapperClasses{
    void overloadedMethod(int N){
        System.out.println("Integer Class Type");
    }
    public static void main(String[] args){
        int i = 21;
        WrapperClasses wr = new mine();

        wr.overloadedMethod(i);
    }
}

这打印Number Class Type.

我理解包装类方法重载的规则:

  1. 如果您将原始数据类型作为参数传递给该方法 调用时,编译器首先检查方法定义,该方法定义采用 与参数相同的数据类型。
  2. 如果这样的方法不存在,那么它会检查方法 定义采用比传递的原始数据类型更大的数据类型 数据类型。即,它尝试执行自动扩大转换 传递的数据类型。
  3. 如果自动扩展转换不可能,那么它会检查 方法定义,将相应的包装类类型作为 争论。即,它尝试执行自动装箱转换。
  4. 如果这样的方法不存在,那么它会检查一个方法 将超类类型(数字或对象类型)作为参数。
  5. 如果这样的方法也不存在,那么编译器会给出一个 编译时错误。

根据规则1,应该打印Integer Class Type。我在这里缺少什么?


在语言规范级别,这是因为参数不同于原始类型和包装原始类型的方法不被视为覆盖等效项。 (一种奇特的说法是“他们只是不这样做,因为语言规范是这么说的”)。

但从逻辑上讲,他们也不应该这样做,至少在int子类中的参数“覆盖”超类中的包装参数。

根据里氏替换原则,子类中的方法必须接受at least超类中的方法接受的所有参数。

如果超类方法接受包装类,它也可以接受null。如果子类方法只允许接受int,它不能接受 null,因此它是不可替代的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的原始类型参数方法不覆盖包装器类型参数超类方法? 的相关文章

  • HTTP 状态 404 - 请求的资源不可用

    在使用 MyEclipse IDE 中的 Tomcat 服务器和 Struts 2 框架时 我遇到了反复出现的问题 我将我的程序作为服务器应用程序运行 当它运行时 默认的index jsp 文件将成功打开 但应用程序的其他过去都不起作用 当
  • 任务“:app:dexDebug”执行失败

    我目前正在处理我的项目 我决定将我的 Android Studio 更新到新版本 但在我导入项目后 它显示如下错误 Information Gradle tasks app assembleDebug app preBuild UP TO
  • java中的csv到pdf文件

    我正在尝试获得一个csv文件解析为pdf 到目前为止我所拥有的内容附在下面 我的问题是这段代码最终出现在 pdf 中的文件在 csv 文件的第一行被截断 我不明白为什么 附示例 本质上我想要一个没有任何操作的 csv 文件的 pdf 版本
  • JTree 节点不会被直观地选择

    不知何故 我无法为我的 JTree 节点启用 选择突出显示 我正在我的项目中使用自定义单元格渲染器 这很可能导致此问题 这是完整的渲染器类代码 protected class ProfessionTreeCellRenderer exten
  • 无法加载 jar 文件的主类

    我使用 Eclipse IDE 开发了一个应用程序 创建应用程序后 我以 jar 格式导出项目 当我尝试运行此 jar 文件时 出现错误 无法加载主类 请帮忙 当您将项目导出为 jar 时 请参阅此所以问题 https stackoverf
  • 通过 InjectMocks Spy 注入对象

    我需要对一个类运行一系列单元测试 该类具有 Autowired Logger 实现 实现的基本思想是 Mock Logger logger InjectMocks TestedClass tested 但我想保存日志输出功能 Mockito
  • 方法断点可能会大大减慢调试速度

    每当向方法声明行添加断点 在 Intellij IDEA 或 Android Studio 中 时 都会出现一个弹出窗口 方法断点可能会大大减慢调试速度 为什么会这样戏剧性地减慢调试速度 是我的问题吗 将断点放在函数的第一行有什么不同 Th
  • Java:从元素创建 DOM 元素,而不是文档

    如您所知 在 Java 中创建 Dom 元素的正确方法是执行以下操作 import org w3c dom Document import org w3c dom Element Document d Element e e d creat
  • 服务器到 Firebase HTTP POST 结果为响应消息 200

    使用 Java 代码 向下滚动查看 我使用 FCM 向我的 Android 发送通知消息 当提供正确的服务器密钥令牌时 我收到如下所示的响应消息 之后从 FCM 收到以下响应消息 Response 200 Success Message m
  • spring - 强制 @Autowired 字段的 cglib 代理

    我有混合堆栈 EJB 和 Spring 为了将 Spring 自动装配到 EJB 我使用SpringBeanAutowiringInterceptor 不确定这是否会影响我遇到的问题 在尝试通过以下方式自动装配 bean 时 Scope p
  • 如何将 XMP XML 块序列化为现有的 JPEG 图像?

    我有许多 JPEG 图像 其中包含损坏的 XMP XML 块 我可以轻松修复这些块 但我不确定如何将 固定 数据写回图像文件 我目前正在使用 JAVA 但我愿意接受任何能让这项任务变得容易的事情 这是目标关于 XMP XML 的另一个问题
  • cucumber-junit-platform-engine 中的功能文件发现

    In cucumber junit我使用的库 CucumberOptions定义功能文件位置 package com mycompany cucumber import cucumber api CucumberOptions import
  • Install4j:如何在安装结束时执行命令行 java -jar filename.jar

    在 Intall4j 中 在安装结束时 我只想通过执行如下命令行来初始化某些内容 java jar filename jar 我怎样才能归档这个任务install4j Thanks 将 运行可执行文件或批处理文件 操作添加到 安装屏幕 并设
  • 具有多种值类型的 Java 枚举

    基本上我所做的是为国家编写一个枚举 我希望不仅能够像国家一样访问它们 而且还能够访问它们的缩写以及它们是否是原始殖民地 public enum States MASSACHUSETTS Massachusetts MA true MICHI
  • Apache Commons CLI:替代已弃用的 OptionBuilder?

    IntelliJ 显示此示例代码中不推荐使用 OptionBuilderhttp commons apache org proper commons cli usage html http commons apache org proper
  • 如何使用 Mockito 和 Junit 模拟 ZonedDateTime

    我需要模拟一个ZonedDateTime ofInstant 方法 我知道SO中有很多建议 但对于我的具体问题 到目前为止我还没有找到任何简单的解决办法 这是我的代码 public ZonedDateTime myMethodToTest
  • 使用 Java 从 S3 上的文件在 S3 上创建 zip 文件

    我在 S3 上有很多文件 需要对其进行压缩 然后通过 S3 提供压缩文件 目前 我将它们从流压缩到本地文件 然后再次上传该文件 这会占用大量磁盘空间 因为每个文件大约有 3 10MB 而且我必须压缩多达 100 000 个文件 所以一个 z
  • 如何在android sdk上使用PowerMock

    我想为我的 android 项目编写一些单元测试和仪器测试 然而 我遇到了一个困扰我一段时间的问题 我需要模拟静态方法并伪造返回值来测试项目 经过一些论坛的调查 唯一的方法是使用PowerMock来模拟静态方法 这是我的 gradle 的一
  • 为什么 BufferedWriter 不写入文件?

    我有这个代码 String strings Hi You He They Tetrabenzene Caaorine Calorine File file new File G words txt FileWriter fWriter Bu
  • Spring Boot MSSQL Kerberos 身份验证

    目前在我的春季靴子中application properties文件中 我指定以下行来连接到 MSSql 服务器 spring datasource url jdbc sqlserver localhost databaseName spr

随机推荐

  • '==' 与 string.equals c# .net [重复]

    这个问题在这里已经有答案了 可能的重复 C String Equals 与 大家好 有时有人告诉我 你永远不应该将字符串与 进行比较 而应该使用 string equals 但它指的是 java lang String equals NET
  • 如何使用 JavaScript 检查 CSS calc() 是否可用?

    有没有办法检查是否CSS 函数calc可以使用 JavaScript 实现吗 我发现了很多关于获得相同行为的问题和文章calc使用 jQuery 但我怎样才能只检查它是否可用 In 现代化你可以找到测试css calc目前处于非核心检测中
  • 为什么 numpy.array() 有时很慢?

    我正在使用 numpy array 函数从列表创建 numpy float64 ndarrays 我注意到 当列表不包含任何内容或提供列表列表时 速度非常慢 下面是一些带有时间的例子 有明显的解决方法 但为什么这么慢 None 列表的示例
  • Python TypeError:“str”对象不可为类调用

    请帮助我理解这一点 我创建了一个非常简单的程序来尝试理解类 class One object def init self class2 self name Amy self age 21 self class2 class2 def gre
  • 动画 UIImageView 色调

    如同上一个问题 我想将任意颜色的色调应用于任意图像 UIImageView 然而 我希望色调在 N 秒的时间内逐渐消失 以产生 脉冲 效果 我将每 M 秒触发一次脉冲 虽然我认为我可以使用一个简单的解决方案NSTimer要改变色调 我想我可
  • 在 ImageVIew 上绘制矩形

    我想实现一个裁剪功能 我想在 imageView 上有一个小矩形 矩形应该是静态的 我想移动图像并在矩形区域内裁剪图像 然后获取矩形内的图像作为裁剪图像 我尝试使用位图作为参数创建画布 但它不起作用 我已经尝试了很多方法来搜索如何做到这一点
  • 如何在 Android 中的 Google Place PlacePicker 中设置“类型”?

    在新的 Google Places API 中 它们附带了一项名为 PlacePicker 的新功能 从他们拥有的地点列表 地图中选择一个地点是一项简单的活动 在 Places API 中 我们可以提供一个类型列表 以仅接收这些特定类型的地
  • Android Studio - 错误:找不到资源drawable/abc_ic_ab_back_mtrl_am_alpha(又名com.instacoin:drawable/abc_ic_ab_back_mtrl_am_alpha)

    我收到这些错误 错误 资源可绘制 abc ic ab back mtrl am alpha 又名 com instacoin drawable abc ic ab back mtrl am alpha 未找到 错误 链接文件资源失败 错误
  • 在命令行上编译 C++Builder 项目

    有没有办法编译一个C Builder从命令行项目 特定的构建配置 就像是 CommandToBuild ProjectNameToBuild BuildConfiguration Use msbuild project cbproj p c
  • 实体框架异常:发现不明确的匹配

    我收到错误 发现不明确的匹配 这段代码放在 Add上 var db new NexusEntities db Reports Add mmr 从谷歌搜索来看 如果有两个类具有相同的名称但位于不同的命名空间中 这似乎是一个问题 据我所知 情况
  • 使用jquery和selenium IDE 1.0.8获取元素

    我正在尝试使用 jquery 和 Selenium IDe 1 0 8 获取元素 td storeValue td td result find img filter alt quot NameOfPhoto quot eq 0 td td
  • 将字母转换为数字

    我有一堆字母 但我一生都无法弄清楚如何将它们转换为相应的数字 letters 1 4 有没有一个功能 numbers e 返回 5 或者用户定义的东西 即1994 我想将所有 26 个字母转换为特定值 我不知道 预建 功能 但这样的映射很容
  • 在 iOS 应用程序中实施 OAuth 1.0

    我一整天都在为这件事伤透了脑筋 我希望将我的 iOS 应用程序与 Withings api 集成 它使用 OAuth 1 0 我似乎无法完全理解如何实现它 我一直在下载多个 OAuth 框架 MPOAuth gtm oauth ssoaut
  • JavaScript 表操作

    我有一张包含一列和大约十行的表格 第一列包含以文本作为行标题的行 标题 1 标题 2 第二列包含供用户输入数据的字段 文本框 and 复选框 我想在顶部有一个标记为 的按钮添新 并让它创建第三列 其字段与第一列相同 如果用户再次单击它 它将
  • 在 bash 中并行设置变量

    这是一个示例程序 bin bash for x in 1 5 do output x echo x done wait for x in 1 5 do echo output x done 我希望它能够运行并打印出分配给每个成员的值outp
  • 将 Google 云客户端库添加到 Play 2.5 时出现 ChannelException

    这是一些堆栈跟踪 io netty channel ChannelException Unable to create Channel from class class io netty channel socket nio NioServ
  • 使用 JSON 绘制 google 图表

    如果它是一个单独的 JSON 文件 我如何检索和使用 google 图表的数据集 我尝试了 jQuery getJSON 但无法让它工作 Google Viz 应该使用 JSON 来绘制条形图 有没有原生的谷歌API方式 或者我可以找到一种
  • Xcode NSManagedObject 子类在标记为非可选时包含选项

    我有一个名为 Film 的核心数据实体 它具有属性标题和日期 我注意到生成的 NSManagedObject 子类包含可选的 NSManaged 属性 即使我在核心数据检查器中将这些属性标记为非可选 我可以手动将其更改为非可选属性 还是将其
  • 错误:GooglePlayServicesClient 包不存在

    我已经使用 android studio 添加了登录活动到我的应用程序 但是我遇到了这些错误 Error 11 37 error cannot find symbol class GooglePlayServicesClient Error
  • 为什么我的原始类型参数方法不覆盖包装器类型参数超类方法?

    public class WrapperClasses void overloadedMethod Number N System out println Number Class Type void overloadedMethod Do