我使用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中是否有语言规范我错过了解释这种行为?