public void add(long... x){}
public void add(Integer... x){}
add(2);
这会产生错误…为什么加宽和装箱均不执行叠加?
但是没有vararg的重载可以正常工作
public void add(long x){}
public void add(Integer x){}
add(2);
在这里将执行add(long x),这将扩大拳击效果……为什么与var参数的概念不同
Java编译器执行三种尝试来选择适当的方法重载(JLS§15.12.2.1):
阶段1:通过子类型识别匹配Arity方法
(可能的装箱转换和带有varargs的方法将被忽略)
阶段2:确定适用于方法调用转换的匹配Arity方法
(考虑了装箱转换,但忽略具有varargs的方法)
阶段3:确定适用的可变Arity方法
(检查所有可能性)
因此,通过您的示例,它的工作方式如下:
没有可变参数:add(long x)
被(此方法适用由子类型,因为识别为在第一阶段只适用方法int
是的一个亚型long
,§JLS4.10.1),从而使下面的相位不执行。
使用varargs:重载解析算法进入第3阶段,这两种方法都被确定为适用,并且编译器无法选择它们中最具体的方法(选择最具体的方法是另一种复杂的算法),因此报告了歧义。
也可以看看:
问题内容: 两者之间有什么区别。我知道Boxing正在将原始值转换为引用。什么在扩大。还有,应该先进行顺序装箱还是应进行加宽的顺序? 问题答案: 扩展是将变量转换为具有更大类型的变量。 可以使用原始或引用类型进行扩展。 例如 : -> -> 正如JLS所述: 装箱转换(第5.1.7节) [是](可选)后跟加宽的参考转换 资源: JLS-扩展原始转换 JLS-扩大参考转换
了解如何创建和管理插件。 创建插件 选择“插件”>“开发”>“创建插件”,该菜单将引导您进入 Adobe I/O 开发者控制台。 有关更多创建、测试、提交插件的入门信息,请参阅 Adobe XD 开发者文档。创建插件 查看和安装插件 要查看可安装的插件,请选择“插件”>“发现插件”,或者单击工具栏上的“插件”图标。此外,单击“发现插件 (+)”图标启动“插件管理器”。 查看和安装插件 在插件管理器
你可以使用我们提供的 Pip, Docker, Virtualenv, Anaconda 或 源码编译的方法安装 TensorFlow. Pip 安装 Pip 是一个 Python 的软件包安装与管理工具. 在安装 TensorFlow 过程中要涉及安装或升级的包详见 列表 首先安装 pip (或 Python3 的 pip3 ): # Ubuntu/Linux 64-bit $ sudo apt
安装与卸载 Compose 支持 Linux、macOS、Windows 10 三大平台。 Compose 可以通过 Python 的包管理工具 pip 进行安装,也可以直接下载编译好的二进制文件使用,甚至能够直接在 Docker 容器中运行。 Docker Desktop for Mac/Windows 自带 docker-compose 二进制文件,安装 Docker 之后可以直接使用。 $
下载软件 当前版本:SkyCaiji V2.3.3 码云Github站长下载A5下载<a href="javascript:;" onclick="modal('宝塔面板','登录宝塔面板后台»软件商店»一键部署»蓝天采集器 注意:一键部署只能安装在根目录,如需安装在子目录请手动下载软件');">宝塔面板 升级软件 可直接在后台首页中检测更新后点击升级,或者将压缩包上传至服务器解压覆盖即可!
简介 Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。 Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当; Hutool是项目中“util”包友好的替代,它节省了开发人员对项目