基于下面的代码片段:
// as primitive
MyClass.primitiveMethod(double val); // method signature
MyClass.primitiveMethod(12); // ok
// as object
MyClass.objectMethod(Double val); // method signature
MyClass.objectMethod(12); // error
MyClass.objectMethod(12d); // ok
MyClass.objectMethod((double)12); //ok
Run Code Online (Sandbox Code Playgroud)
Q1:虽然12d和(double)12似乎都有效,但指定后缀和显式转换之间有什么区别吗?(行为/表现)
Q2:为什么MyClass.objectMethod(12)一定要认为是错误?虽然 12 应该被解析为 Integer 对象,但是 Java 不能足够聪明地知道 12 也是一个 Double 值并接受它吗?
java ×1