gpt4 book ai didi

java - 为什么在应该返回简短工作的方法中返回 int?

转载 作者:IT老高 更新时间:2023-10-28 20:51:52 24 4
gpt4 key购买 nike

static void method(short x)
{
//do some stuff
}

当我使用以下行从 main 方法调用上述方法时。

method(1); // compilation failed

我知道上面的调用是无效的,因为参数 'x' 期望是短的,我们传递的是 int。

我进一步测试了上述概念并编写了另一种方法:

static short method()
{
//do some stuff
return 1;
}

但是上面的方法工作正常,返回类型很短,我们返回的是 int。为什么第二种方法可以编译?

最佳答案

return statement (JLS 14.17)能够使用 assignment conversion (JLS 5.2)从原始表达式类型转换为返回类型。

赋值转换包括将常量表达式转换为更窄类型(如果它在目标类型的范围内)的能力。所以当值在 short 的范围内时,int 类型的常量表达式可以转换为 short

方法参数不经过赋值转换——它们只使用方法invocation conversion (JLS 5.3)其中包含此常量转换。

为什么会发生这种情况而言 - 我怀疑它只是让事情变得更容易推理。赋值转换总是有一个 single 目标类型 - 而在方法参数的情况下,可能需要考虑各种不同的重载,因此必须有更多的规则来确定常量表达式转换的具体程度将会。这只是一个猜测 - 显然 可以 完成。 (例如,C# 允许这样做。)

关于java - 为什么在应该返回简短工作的方法中返回 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16769717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com