Groovy - 继承后的区分大小写的属性访问

时间:2017-12-08 09:26:51

标签: class inheritance groovy

我使用Groovy-Class继承偶然发现了一个奇怪的行为。

给出以下示例:

class Foobar {
    def ACcessible = 1
    def AlsoAccessible = 2
}

class Foo {
    def ACcessible = 3
    def alsoAccessible = 4
    def NonAccessible = 5
}

class Bar extends Foo {

}

def foobar = new Foobar()
def bar = new Bar()


println "foobar.ACcessible = " + foobar.ACcessible
println "foobar.AlsoAccessible = " + foobar.alsoAccessible
println "bar.ACcessible = " + bar.ACcessible
println "bar.alsoAccessibleProb = " + bar.alsoAccessible
println "bar.NonAccessible = " + bar.NonAccessible

似乎属性的可访问性取决于变量名的大小写。在继承的类中,只能访问以小写字母或两个大写字母开头的变量名。

因此,脚本会生成以下输出:

foobar.ACcessible = 1
Caught: groovy.lang.MissingPropertyException: No such property: NonAccessible for class: Bar
foobar.AlsoAccessible = 2
Possible solutions: nonAccessible
bar.ACcessible = 3
groovy.lang.MissingPropertyException: No such property: NonAccessible for class: Bar
bar.alsoAccessibleProb = 4

Groovy中是否有语言规范我错过了解释这种行为?

0 个答案:

没有答案