Java中的方法规则重载说明

gstackoverflow

我试图了解使用Java编译器的重载规则。

对我来说太难了。

public class Main {

    public static void var(Long x) {
        System.out.println("Long");
    }

    public static void var(int... x) {
        System.out.println("int... x");
    }


    public static void main(String... args) {
          var(5);
    }
}

输出:

int...

在互联网上,我发现了以下规则:

  1. 图元加宽>装箱> Varargs。
  2. 不允许加宽和装箱(WB)。
  3. 允许装箱和加宽(BW)。
  4. 重载时,只能以互斥的方式使用Widening + vararg和Boxing + vararg,即不能一起使用。
  5. 不允许在包装类之间扩展

但我无法将此规则应用于此代码行为。

你能帮助我吗?

我的错误版本:

拳击int->Integer并扩大到Long

附加问题

public class Main {

    public static void var(Object x) {
        System.out.println("Object");
    }

    public static void var(int... x) {
        System.out.println("int... x");
    }


    public static void main(String... args) {
          var(5);
    }
}

输出:

object
罗希特·贾恩(Rohit Jain)

拳击intInteger和拉大到Long

虽然intInteger拳击很好,但IntegerLong有效拓宽却不大。Long不是的超型Integer所以那是无效的。一种选择是加宽,然后进行拳击但是在Java中不允许这种转换。因此,剩下的唯一选择是使用varargs。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP覆盖方法规则

来自分类Dev

PHP覆盖方法规则

来自分类Dev

Java中具有多个参数的重载方法的选择规则

来自分类Dev

活动生命周期方法规则

来自分类Dev

什么是语法规则(在解析中)?

来自分类Dev

有什么方法可以删除语法规则中不需要的空格?

来自分类Dev

Java中的方法重载解析

来自分类Dev

Java中的重载方法调用

来自分类Dev

Java中的构造方法重载

来自分类Dev

Java中的构造方法重载

来自分类Dev

获取在magento中应用的税法规则的名称

来自分类Dev

如何在ANTLR的语法规则中处理歧义标记?

来自分类Dev

Scheme的语法规则-在`...`中混合不同的语法选择

来自分类Dev

在Perl中声明变量的语法的语法规则?

来自分类Dev

获取antlr3中的语法规则文本

来自分类Dev

获取在magento中应用的税法规则的名称

来自分类常见问题

(JavaScript)语法规则

来自分类Dev

(JavaScript)语法规则

来自分类Dev

路径语法规则

来自分类Dev

可以在Java中重载finalize()方法吗

来自分类Dev

Java中的重载方法优先级

来自分类Dev

JAVA中重载方法的调用顺序

来自分类Dev

Java中的方法重载-使用列表类型

来自分类Dev

Java中的重载方法优先级

来自分类Dev

Java中的构造方法重载-何时使用?

来自分类Dev

模板方法类模板的重载解析规则

来自分类Dev

jQuery验证自定义方法规则和带有动态名称的消息?

来自分类Dev

Antlr 4-永远不会访问Java语法规则“显式泛型调用”

来自分类Dev

Java方法和说明