Java 中重载方法的类型顺序

2023-11-26

给定 Java 中同一个类的两个方法:

public void doSomething( Person person );
public void doSomething( Employee employee );

where

Employee extends Person

如果我打电话:

doSomething( employee )

我发现doSomething( Person )被调用。

我预计会调用最接近的匹配合约的重载,而不是最抽象的合约(这就是我发现的)

有人可以解释为什么吗?


使用最具体的适用过载 - 但该过载是在以下位置确定的compile-time,基于编译时类型employee多变的。

换句话说:

Employee employee = new Employee();
doSomething(employee); // Calls doSomething(Employee)

but:

Person employee = new Employee();
doSomething(employee); // Calls doSomething(Person)

请注意,这不同于压倒性的它在哪里执行时间处理时间目标对象的类型很重要。

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

Java 中重载方法的类型顺序 的相关文章

  • 有没有创建 Cron 表达式的 Java 代码? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要一个 Java 代码来根据用户输入创建一个 cron 表达式 用户输入是时间 频率和执行次数 只需从评论中添加 自己创建 即可
  • 如何在 JavaFX 中连接可观察列表?

    我所说的串联是指获得一个新列表 该列表侦听所有串联部分的更改 方法的目的是什么FXCollections concat ObservableList
  • 如何调试“com.android.okhttp”

    在android kitkat中 URLConnection的实现已经被OkHttp取代 如何调试呢 OkHttp 位于此目录中 external okhttp android main java com squareup okhttp 当
  • 如何在 JPQL 或 HQL 中进行限制查询?

    在 Hibernate 3 中 有没有办法在 HQL 中执行相当于以下 MySQL 限制的操作 select from a table order by a table column desc limit 0 20 如果可能的话 我不想使用
  • 如何在 Java 中向时间戳添加/减去时区偏移量?

    我正在使用 JDK 8 并且玩过ZonedDateTime and Timestamp很多 但我仍然无法解决我面临的问题 假设我得到了格式化的Timestamp在格林威治标准时间 UTC 我的服务器位于某处 假设它设置为Asia Calcu
  • Jframe 内有 2 个 Jdialogs 的 setModal 问题

    当我设置第一个选项时 我遇到了问题JDialog模态 第二个非模态 这是我正在尝试实现的功能 单击 测试对话框 按钮 一个JDialog有名字自定义对话框 主要的将会打开 如果单击 是 选项自定义对话框主 其他JDialog named 自
  • 将巨大的模式编译成Java

    有两个主要工具提供了将 XSD 模式编译为 Java 的方法 xmlbeans 和 JAXB 问题是 XSD 模式确实很大 30MB 的 XML 文件 大部分模式在我的项目中没有使用 所以我可以注释掉大部分代码 但这不是一个好的解决方案 目
  • java inputstream 打印控制台内容

    sock new Socket www google com 80 out new BufferedOutputStream sock getOutputStream in new BufferedInputStream sock getI
  • 将人类日期(当地时间 GMT)转​​换为日期

    我正在服务器上工作 服务器正在向我发送 GMT 本地日期的日期 例如Fri Jun 22 09 29 29 NPT 2018在字符串格式上 我将其转换为日期 如下所示 SimpleDateFormat simpleDateFormat ne
  • 在Java中运行bat文件并等待

    您可能会认为从 Java 启动 bat 文件是一项简单的任务 但事实并非如此 我有一个 bat 文件 它对从文本文件读取的值循环执行一些 sql 命令 它或多或少是这样的 FOR F x in CD listOfThings txt do
  • 不可变的最终变量应该始终是静态的吗? [复制]

    这个问题在这里已经有答案了 在java中 如果一个变量是不可变的并且是final的 那么它应该是一个静态类变量吗 我问这个问题是因为每次类的实例使用它时创建一个新对象似乎很浪费 因为无论如何它总是相同的 Example 每次调用方法时都会创
  • 如何区分从 Saxon XPathSelector 返回的属性节点和元素节点

    给定 XML
  • Java Swing - 如何禁用 JPanel?

    我有一些JComponents on a JPanel我想在按下 开始 按钮时禁用所有这些组件 目前 我通过以下方式显式禁用所有组件 component1 setEnabled false 但是有什么办法可以一次性禁用所有组件吗 我尝试禁用
  • 将 JavaFX FXML 对象分组在一起

    非常具有描述性和信息性的答案将从我这里获得价值 50 声望的赏金 我正在 JavaFX 中开发一个应用程序 对于视图 我使用 FXML
  • 手动设置Android Studio的JDK路径

    如何为 Android Studio 使用自定义 JDK 路径 我不想弄乱 PATH 因为我没有管理员权限 是否有某个配置设置文件允许我进行设置 如果您查看项目设置 您可以从那里访问 jdk 在标准 Windows 键盘映射上 您可以在项目
  • 在java中以原子方式获取多个锁

    我有以下代码 注意 为了可读性 我尽可能简化了代码 如果我忘记了任何关键部分 请告诉我 public class User private Relations relations public User relations new Rela
  • partitioningBy 必须生成一个包含 true 和 false 条目的映射吗?

    The 分区依据 https docs oracle com javase 8 docs api java util stream Collectors html partitioningBy java util function Pred
  • Android View Canvas onDraw 未执行

    我目前正在开发一个自定义视图 它在画布上绘制一些图块 这些图块是从多个文件加载的 并将在需要时加载 它们将由 AsyncTask 加载 如果它们已经加载 它们只会被绘制在画布上 这工作正常 如果加载了这些图片 AsyncTask 就会触发v
  • 抛出 Java 异常时是否会生成堆栈跟踪?

    这是假设我们不调用 printstacktrace 方法 只是抛出和捕获 我们正在考虑这样做是为了解决一些性能瓶颈 不 堆栈跟踪是在构造异常对象时生成的 而不是在抛出异常对象时生成的 Throwable 构造函数调用 fillInStack
  • Java 11 - 将 Spring @PostConstruct 替换为 afterPropertiesSet 或使用 initMethod

    我正在使用 spring 应用程序 有时会使用 PostConstruct用于代码和测试中的设置 看来注释将被排除在外Java 11 https www baeldung com spring postconstruct predestro

随机推荐

  • 显示 Django 消息框架消息

    我一直在使用Django 消息传递框架在模板中向用户显示消息 我将它们输出到模板中 如下所示 ul for message in messages ul
  • C++ STL 中的正则表达式

    STL 中是否有任何经过测试且无需任何额外编译器选项即可工作的本机库 我尝试使用
  • 如何使用 STL 字符串和流读取/存储 unicode

    我需要修改我的程序以接受 Unicode 它可能来自任何 UTF 8 以及各种 UTF 16 和 UTF 32 编码 我对 Unicode 不太了解 尽管我读过 Joel Spolsky 的article和维基百科页面 现在我正在使用std
  • 如何将 .txt / .csv 文件转换为 ORC 格式

    对于某些要求我想转换文本文件 带分隔符 to ORC 优化行列 格式 由于我必须定期运行它 所以我想写一个java程序这样做 我不想使用 Hive 临时表解决方法 有人可以帮我做吗 以下是我尝试过的 ORCMapper java impor
  • 如何正确使用 print_r 或 var_dump?

    我在调试时经常使用以下代码片段 echo pre var dump var pre 我发现我通常会得到很好的可读输出 但有时我就是不这样做 我现在对这个例子特别恼火
  • 逗号运算符 , 的作用是什么?

    什么是 运算符在C中做什么 表达方式 expression1 expression2 First expression1被评估 那么expression2被评估 并且值expression2返回整个表达式
  • Python 捕获终止后的子进程输出

    我试图在引发 TimeoutExpired 异常时获取子进程输出 在 Windows 上 有任何想法吗 try proc subprocess run cmd timeout 3 except subprocess TimeoutExpir
  • 自定义 Eclipse 包

    我想打包 Eclipse 一些自定义插件 以供内部使用 该包装将包含 平台运行时二进制 win32 和 linux x86 gtk Mylyn 任务列表 Mylyn 聚焦用户界面 Mylyn 的 Mantis 连接器 我怎样才能生成这些定制
  • 如何在给定完整路径的情况下动态导入模块?

    如何在给定完整路径的情况下加载 Python 模块 请注意 该文件可以位于文件系统中用户具有访问权限的任何位置 See also How to import a module given its name as string 让我们MyCl
  • 显示微调器并将其在同一块中删除

    在一个可能需要几秒钟的方法中 我有 UIActivityIndicatorView spinner UIActivityIndicatorView alloc initWithFrame CGRectMake 135 140 50 50 s
  • Rails - 按天和小时分组

    我想创建一个数组 其中包含每天每小时创建的项目数 我正在跟踪人们的感受 所以我的模型被称为TrackMood它只有一个名为mood和时间戳 If I do TrackMood where mood good group hour creat
  • Zend_Framework 装饰器将 Label 和 ViewHelper 包装在 div 内

    我对 zend 装饰混乱很陌生 但我有两个重要的问题我无法解决 问题一后面是一些例子 decorate array array ViewHelper array Description array Errors array class gt
  • 如何通过 Windows 应用商店证书签署我的 Windows 应用商店应用程序?

    我刚刚从 Windows 应用商店购买了开发者帐户 我想在上传之前签署我的应用程序 当我进入包装然后单击 选择证书 按钮时 我会看到以下选项 从证书存储中选择 从文件中选择 创建测试证书 我使用第三个选项测试了所有内容 但第一个选项 从证书
  • 使用 TomEE 嵌入式 EJBContainer api 进行 EJB 测试:java.lang.ClassFormatError 异常

    我将使用 TomEE 嵌入的 EJBContainer 来测试我的 EJB 这是我的 JUnit 测试用例框架 package com xxx indexer scheduler service import java util Prope
  • CMS(joomla、drupal)和框架(Zend、Symfony、CI)之间的区别

    什么样的应用程序是使用 joomla drupal 等 CMS 开发的 什么样的应用程序是使用框架开发的 如果所有类型的应用程序都可以在像 drupal 这样的 CMS 中开发 那么我们为什么要使用像 SYMFONY 这样的框架呢 CMS
  • 可以用css渐变做一条曲线吗?

    我从客户那里得到了这个设计 按钮中有两层渐变 棘手的是 其中一层有弯曲的边缘 我模拟了这个按钮 希望你能明白我在说什么 我设法做的是直边 参见代码片段 色差并不重要 只需要曲线 以前有人这样做过吗 或者它必须是背景图片 谢谢 附 我还考虑过
  • C++ 将模板类型限制为数字

    我的意思是 我有一个 C 函数 我想将钱存入帐户 这个函数应该能够接受浮点数 双精度数 整数等 因为这些都是有效的输入形式 因为我需要的只是一个要存入的数字 因此 我宣布 template
  • 从默认参数推断模板参数

    考虑这段代码 include
  • 将 MSBuild 3.5 与 Visual Studio 2010 结合使用

    如何强制 Visual Studio 2010 使用 MSBuild 3 5 而不是新的 4 0 我认为如果不进行肮脏的黑客攻击 您就无法更改 Visual Studio 中使用的 MSBuild 版本 工具版本 MSBuild 使用的 M
  • Java 中重载方法的类型顺序

    给定 Java 中同一个类的两个方法 public void doSomething Person person public void doSomething Employee employee where Employee extend