这是因为您的 IDE(在这种情况下是误导性的)看到了可能的自动装箱。
例如,如果您创建一个List<Integer>
,您可以向其中添加一个:从toint
自动装箱。Unxobing 是相反的:到. 请注意,装箱和拆箱都只适用于数字基元类型(但不适用于它们的数组)。int
Integer
Integer
int
毫无疑问,double
最终会选择 with 的方法(因为它更具体),但您的 IDE 认为可能存在歧义。
此示例代码:
public final class Test
{
public static void item(Object a, Object b, String c, String d)
{
System.out.println("Object");
}
public static void item(double a, double b, String c, String d)
{
System.out.println("double");
}
public static void unbox(final double d)
{
System.out.println("Unboxed!");
}
public static void useIt(double a, double b, Double c, Double d)
{
// primitives
item(a, b, "", "");
// cast to corresponding classes
item((Double) a, (Double) b, "", "");
// objects
item(c, d, "", "");
// unboxed by the "unbox" method which takes a "double" as an argument
unbox(new Double(2.0));
}
public static void main(final String... args)
{
// Autoboxing of the third and fourth argument
useIt(1.0, 1.0, 1.0, 1.0);
}
}
输出:
double
Object
Object
Unboxed!
但是请注意,您不能调用:
useIt((Double) a, b, c, d); // No autoboxing of "b"