You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何传入short类型参数调用方法会选择void (int)重载而非void (Short)?

为什么调用go(x)会输出int而非Short?

这是Java方法重载的匹配优先级规则导致的:

  • 基本类型的拓宽转换优先级高于装箱转换。
  • 你代码里的x是short基本类型,调用go(x)时,编译器会优先寻找可通过基本类型拓宽匹配的方法——short可以自动提升为int(这是Java默认允许的无精度损失转换),所以直接匹配了go(int n)方法,输出int。
  • 而将short装箱为Short包装类的转换优先级更低,因此不会被编译器优先选中。

如果想要调用Short参数的版本,手动触发装箱即可:

go(Short.valueOf(x));
// 或者通过强制转型触发装箱
go((Short) x);

内容的提问来源于stack exchange,提问作者kolinunlt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 02:49:55