相关疑难解决方法(0)

方法使用Java 8三元条件和未装箱的原语过载歧义

以下是Java 7中的代码编译,但不是openjdk-1.8.0.45-31.b13.fc21.

static void f(Object o1, int i) {}
static void f(Object o1, Object o2) {}

static void test(boolean b) {
    String s = "string";
    double d = 1.0;
    // The supremum of types 'String' and 'double' is 'Object'
    Object o = b ? s : d;
    Double boxedDouble = d;
    int i = 1;
    f(o,                   i); // fine
    f(b ? s : boxedDouble, i); // fine
    f(b ? s : d,           i); // ERROR!  Ambiguous
}
Run Code Online (Sandbox Code Playgroud)

编译器声称最后一个方法调用不明确.

如果我们改变的第二个参数的类型f …

java overloading java-8

24
推荐指数
1
解决办法
1169
查看次数

模糊的varargs方法

这是一个不编译的代码示例:

public class Test {
    public static void main(String[] args) {
        method(1);
    }

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

    public static void method(Integer... x) {
        System.out.println("single");
    }
}
Run Code Online (Sandbox Code Playgroud)

有人能告诉我为什么这些方法含糊不清吗?先感谢您.

java methods variadic-functions

4
推荐指数
2
解决办法
979
查看次数

标签 统计

java ×2

java-8 ×1

methods ×1

overloading ×1

variadic-functions ×1