如何使用main函数定义一个groovy类,该函数创建一个新对象,该对象是另一个类的实例

时间:2015-03-06 18:42:27

标签: groovy

对不起,我是一个时髦的新手,显然只是没有得到它,但是 请有人解释为什么我在编译时会遇到这些错误 以下代码:

tc.groovy:

 class t
 {
   int v;
   t() { v = 1; }
 }
 class tt
 {
   static void main(String[] args)
   {
     t v = new t();
   }
 }

$ groovyc tc.groovy

org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败:

tc.groovy:11:表观变量' v'在静态范围内找到但没有引用局部变量,静态字段或类。可能的原因:

您试图引用绑定中的变量或静态上下文中的实例变量。

您错误拼写了一个类名或静态导入的字段。请检查拼写。

您试图使用某种方法' v'但是在语法不允许的地方遗漏括号。

 @ line 11, column 12.
        t v = new t();
          ^

1错误

我想要做的就是编译一个groovy程序,它声明了2个类,一个带有main()方法,需要实例化另一个类的实例。有没有办法在groovy中这样做?

3 个答案:

答案 0 :(得分:1)

将您的类名大写为T,更改构造函数以匹配,它将起作用。 Groovy要求类型名称以大写字母开头。

这与Java不同。在Java中,没有硬性要求类名必须大写,它只是一个约定。在Groovy中,它不仅仅是一种约定,语言的语法假定所有类都以大写字母开头。

答案 1 :(得分:0)

啊哈哈!如果我改变:

t v = new t();

def v = new t();

它编译。<​​/ p>

但是我知道我想要创建一个实例的类:&#39; t&#39;

是不是可以在groovy中创建指定类的实例?

答案 2 :(得分:0)

问题仅发生在任何用户定义的类上 - 即:

class c {}
...
c v = new c();

会产生错误,而:

String v = new String();

不会。

我猜这是一个时髦的错误 - 我会把它作为一个报告。