1

这是我不明白的症结所在:

% 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呢?它就像一个幻像标识符,仅出于实例化目的而实际存在。

4

2 回答 2

3

您的代码不起作用,因为您使用了错误的命名约定。您应该使用大写的 V 来编写类。这样,Groovy shell 知道您指的是一个类,而不是一个变量,以防 Groovy 无法确定它。

这是你真正想要的:

groovy:000> class Vars {
groovy:001>     static int x = 1
groovy:002> }
===> true
groovy:000> Vars.x
===> 1

希望有帮助!

于 2013-05-08T23:30:40.180 回答
0

你的问题是它vars是一个,而不是一个对象,并且 x 没有被声明为一个静态属性。最佳做法是始终使用大写字母命名您的类,以防止这种混淆。

于 2013-05-08T16:27:11.907 回答