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

Java方法重载场景下,如何调用接收byte参数的m1方法?

如何调用接收byte参数的m1方法?

先看你提供的原代码:

public class HelloWorld { 
    public void m1(int i) { System.out.println("int-arg"); } 
    public void m1(byte j) { System.out.println("byte-arg"); } 
    public static void main(String []args) { 
        HelloWorld n=new HelloWorld(); 
        n.m1(12); 
    } 
}

运行后输出int-arg,核心原因是Java里整数字面量默认是int类型,编译器会优先匹配参数类型完全一致的重载方法,所以12直接命中了m1(int i)。

要调用接收byte参数的m1(byte j),有两种直观的实现方式:

  • 显式强制类型转换
    在调用方法时,把字面量强制转为byte类型,明确告诉编译器要匹配byte参数的方法:

    n.m1((byte)12);
    

    这样运行后就会输出byte-arg。

  • 使用byte类型变量传递参数
    先定义一个byte类型的变量赋值,再传入方法,变量的类型会引导编译器匹配正确的重载:

    byte num = 12;
    n.m1(num);
    

    这种方式同样能触发m1(byte j)的调用,输出byte-arg。

补充个小细节:Java不会自动把int字面量(哪怕值在byte的取值范围内)隐式转成byte,因为这属于窄化类型转换,存在精度丢失的潜在风险,所以必须通过显式转换或byte类型变量来明确我们的调用意图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:32:12