相关疑难解决方法(0)

方法重载null参数

我添加了三个带参数的方法:

public static  void doSomething(Object obj) {
    System.out.println("Object called");
}

public static  void doSomething(char[] obj) {
    System.out.println("Array called");
}

public static  void doSomething(Integer obj) {
    System.out.println("Integer called");
}
Run Code Online (Sandbox Code Playgroud)

当我调用时doSomething(null),编译器会将错误视为模糊方法.所以是问题,因为Integerchar[]方法,或IntegerObject方法呢?

java oop null overloading

128
推荐指数
3
解决办法
7万
查看次数

当我点击查找用法时,Intellij如何选择构造函数?

我有一个带有4个参数的构造函数:String, Object, Object, MyEnum.

public MyClass(String name, Object val1, Object val2, MyEnum cat) { 
// find in usage = 202
    this.name = name;
    this.val1 = val1;
    this.val2 = val2;
    this.cat = cat;
}
Run Code Online (Sandbox Code Playgroud)

在95%的用例中,最后一个参数是null,所以我想创建另一个构造函数,它只接受3个参数并将最后一个设置为null.

我想到了一些想法,但最后我尝试了以下解决方案:

  1. 将最后一个参数更改MyEnumInteger(编译错误 - 无关紧要):public MyClass(String name, Object val1, Object val2, Integer cat)- 仍然202找到用法

  2. 添加具有Object类型的最后一个参数的新构造函数:public MyClass(String name, Object val1, Object val2, Object cat)现在,第一个构造函数(with Integer)具有196个用法,第二个用于6.

这正是我想要的(我有6个非null最后一个元素的调用)但是这种行为的原因是什么?Intellij是否进行了一些检查,如果输入类型MyEnum不能作为Integer类型传递,但是null可以传递给两者,那么为什么在第一个构造函数的情况下会减少6个结果呢?

当我从变化ObjectString(现在我有2个构造带 …

intellij-idea

5
推荐指数
1
解决办法
120
查看次数

标签 统计

intellij-idea ×1

java ×1

null ×1

oop ×1

overloading ×1