gpt4 book ai didi

java - 在这段代码中,Groovy 的表现与 Java 不同

转载 作者:搜寻专家 更新时间:2023-11-01 02:31:39 26 4
gpt4 key购买 nike

我看过这个问题here .这个问题的问题是这一行:

Integer i3 = (Integer) -128; /*** Doesn't compile ***/

正如一些答案所说:

The compiler interprets the - as the two-arg minus operator, i.e. it's trying to subtract 128 from some other number named Integer, but there's no such variable in scope

答案对我来说是正确的。现在在 groovy 中,我尝试了与之前相同的代码:

Integer i3 = (Integer) -128; /*** compiles!!! ***/

即使是这行代码也能编译:

Integer i3 = (Integer) -(128); /*** compiles ***/

Groovy 如何执行此操作?所有的 Jvm 语言都这样做吗?在 Groovy 的情况下,幕后发生了什么。

这不会违反 Java 规则吗?有点困惑。

为了引用,我标记了工作的 Groovy 代码 here

提前致谢。

最佳答案

Groovy 不是 Java。

它不必遵循 Java 的规范,在这种情况下......不需要。

为清楚起见进行编辑:我认为让您感到困惑的是您不了解这是两种不同的语言。 Groovy 编译器和 Java 编译器都从您的源代码中输出字节码,然后在 JVM(Java 虚拟机)上运行。 JLS(Java 语言规范)仅适用于 Java 语言。 Groovy 不必遵守它。

关于java - 在这段代码中,Groovy 的表现与 Java 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7942988/

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