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

如何使用一个主函数定义groovy类,该函数创建一个新对象,该对象是另一个类的实例,groovy,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.multipleCompos

对不起,我是一个很棒的新手,显然我不懂,但是 请任何人解释一下为什么我在编译时会出现这些错误 以下代码:

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.multipleCompositionErrorsException:启动失败:

tc.groovy:11:在静态作用域中找到了明显的变量“v”,但未引用局部变量、静态字段或类。可能的原因:

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

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

您试图使用方法“v”,但在语法不允许的位置遗漏了括号

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

我所要做的就是编译一个groovy程序,它声明了两个类,一个带有main()方法,需要实例化另一个类的实例。在groovy中有什么方法可以做到这一点吗?

啊哈!如果我改变:

t v = new t();

它编译

但是我知道我想创建一个实例't'的类


难道不能在groovy中创建一个指定类的实例吗?

将类名大写为t,将构造函数更改为匹配,它就可以工作了。Groovy要求类型名以大写字母开头


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

该问题只出现在任何用户定义的类上,即:

class c {}
...
c v = new c();
将产生错误,而:

String v = new String();
不会


我猜这是一个groovy bug,我将把它作为一个bug来报告。

如果我把上面的文件分成两个文件,'t.groovy'声明类t,tt.groovy声明类tt,那么't.groovy'文件可以用groovyc编译,但是tt.groovy文件会得到同样的错误。我认为groovy的变量初始化语法与Java相同?最好将这些内容作为问题的编辑发布。谢谢!是的,就是这样。在我的groovy文档中似乎没有提到。@JVD,groovy应该与Java互操作。之所以这不是Groovy文档的一部分,可能是因为将类名大写已经是Java文档本身的一部分。顺便说一下,你可以点击Nathan答案旁边的小复选标记来接受他的答案。接受他的答案将确保搜索引擎知道问题得到了回答。此外,你应该删除你的其他答案和其他评论,通过点击编辑链接并更新那里的问题,将所有内容重新折叠到原始问题中。
String v = new String();