gpt4 book ai didi

groovy - 为什么 `++` 在 Groovy 中增加 final 字段?

转载 作者:行者123 更新时间:2023-12-01 00:59:00 25 4
gpt4 key购买 nike

今天,我在 Groovy 中遇到了相当奇怪的问题/功能。
看起来可以使用 ++ 增加最终字段Groovy 中的运算符。

对你来说它看起来像一个错误吗?这种行为与我对 Java 的期望不一致。
有谁知道这怎么可能?

我准备了一个小的 Spock 测试来找出问题所在。

import spock.lang.Specification


class FinalModifierTest extends Specification {

def 'tests bizarre behaviour of final modifier in Groovy'() {
given:
Adder adder = new Adder()

expect:
adder.number.class == Integer

when:
adder.number = 7

then:
thrown(ReadOnlyPropertyException)

when:
adder.increment()

then:
adder.number == 2
}
}

class Adder {
final int number = 1

void increment() {
number++
}
}

显然,InteliJ 通过显示以下消息通知我有关最终字段分配的信息:
“无法为最终字段编号赋值”,但是代码仍然可以编译,更糟糕的是,它成功执行了!

我在上面的例子上运行:

JVM:1.7.0_51

常规:2.2.2

最佳答案

Does it look like a bug to you?


是的。如果您愿意,可以在 https://issues.apache.org/jira/projects/GROOVY 提交 JIRA。我们可以看看。

关于groovy - 为什么 `++` 在 Groovy 中增加 final 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25189153/

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