Java:将具有不同类型的参数传递给函数

Pip*_*ppo 8 java parameter-passing implicit-conversion

在Java中,假设我们有一个带参数的函数double a.如果我传递一个整数作为参数,它是否有效?(我的意思是,是否存在隐式转换?)在相反的情况下:如果我有一个整数作为参数,我传递一个double?

不幸的是,我目前无法编译我的代码,我想检查这个断言.感谢您的关注.

Roh*_*ain 13

有关详细信息,请参阅JLS - 第5.3节Method Invocation Conversion.

方法调用上下文允许使用以下之一:

- an identity conversion (§5.1.1)
- a widening primitive conversion (§5.1.2)
- a widening reference conversion (§5.1.5)
- a boxing conversion (§5.1.7) optionally followed by widening reference conversion
- an unboxing conversion (§5.1.8) optionally followed by a widening primitive conversion.
Run Code Online (Sandbox Code Playgroud)

因此,根据规则#2,您的第一次调用(intto double)将正常工作.

但根据同一部分中引用的声明,第二次调用(doubleto int)将给出编译器错误: -

如果表达式的类型无法通过方法调用上下文中允许的转换转换为参数的类型,则会发生编译时错误.