为什么我会在GroovyConsole中遇到MissingPropertyException?
问题描述:
当我在groovyConsole中执行以下脚本它给了我一个MissingPropertyException
,但我不明白为什么:为什么我会在GroovyConsole中遇到MissingPropertyException?
def a = 'A'
def b() {
println a
}
b()
下抛出异常:
groovy.lang.MissingPropertyException: No such property:
a for class: ConsoleScript18
at ConsoleScript18.b(ConsoleScript18:3)
at ConsoleScript18.run(ConsoleScript18:5)
答
您需要添加一个Field
注解使其工作:
import groovy.transform.Field
@Field
def a = 'A'
def b() {
println a
}
b()
答
这背后的原因是当你写func以外的任何东西没有声明任何类在groovy它被移动到主要功能。
因此,变量a
的范围限于功能main()
,您试图在同一类的另一个功能b()
中访问。但因为没有财产a
为它抛出MissingPropertyException
。