【问题标题】:Method Overloading- Does invocation of method depends on method definition occurrence in Class [duplicate]方法重载-方法的调用是否取决于类中方法定义的出现[重复]
【发布时间】:2020-01-14 17:59:03
【问题描述】:

我尝试了方法重载与自动装箱和加宽的不同组合。我被困在这里了。

public void bite(int a, byte b){
  System.out.println("here in int-byte");
}

public void bite(byte a, int b){
  System.out.println("here in byte-int");
}

主要:

byte a=9,b=8;
//int a=9,b=8;
bite(a, b);

这里出错

方法bite(int, byte)对于类型Overloading是不明确的

当我反转方法定义发生时:

public void bite(byte a, int b){
  System.out.println("here in byte-int");
}

public void bite(int a, byte b){
  System.out.println("here in int-byte");
}

然后报错:

方法bite(byte, int)对于类型Overloading是不明确的

请解释这是怎么发生的。

【问题讨论】:

  • 这能回答你的问题吗? overloading method priority in java
  • 我已经经历了扩大的自动装箱概念,但我认为这里的问题有点不同,我问的是如何首先定义方法是报告错误。

标签: java methods overloading


【解决方案1】:

解决方案可能都是模棱两可的,因为 bit 仅使用 byte 参数调用。所以编译器不知道调用哪个方法作为扩展优先。这两种方法都有int 数据类型,因此编译器无法辨别要扩大哪一种。

【讨论】:

    猜你喜欢
    • 2010-09-30
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多