这是我不明白的症结所在:
% groovysh
Groovy Shell (1.8.6, JVM: 1.6.0_21)
Type 'help' or '\h' for help.
------------------------------------------------------
groovy:000> class vars {
groovy:001> static int x = 1;
groovy:002> }
===> true
groovy:000> println new vars().x
1
===> null
groovy:000> println vars.x
ERROR groovy.lang.MissingPropertyException:
No such property: vars for class: groovysh_evaluate
Possible solutions: class
at groovysh_evaluate.run (groovysh_evaluate:2)
...
如果vars
解析为表达式new vars().x
中的某些内容,为什么不在表达式vars.x
中呢?它就像一个幻像标识符,实际上只是为了实例化而存在。
答案 0 :(得分:3)
您的代码无效,因为您使用了错误的命名约定。你应该用大写字母V编写类。这样Groovy shell就知道你指的是一个类,而不是一个变量,以防Groovy无法确定它。
这就是你真正想要的:
groovy:000> class Vars {
groovy:001> static int x = 1
groovy:002> }
===> true
groovy:000> Vars.x
===> 1
希望有所帮助!
答案 1 :(得分:0)
您的问题是vars
是类,而不是对象,x未声明为静态属性。最佳做法是始终使用大写字母命名您的类,以防止这种混淆。