lea*_*ner 5 groovy groovy-console
代码如下:
class Book
{
     private String title
     Book (String theTitle)
     {
         title=theTitle
     }
     String getTitle()
     {
         return title
     }
}
Book gina=new Book('Groovy in Action')
assert gina.getTitle()=='Groovy in Action'
assert getTitleBackwards(gina)=='noitcA ni yvoorG'
String getTitleBackwards(Book)
{
    title=book.getTitle()
    return title.reverse()
}
Run Code Online (Sandbox Code Playgroud)
当我使用Ctrl + R执行时,我得到以下编译错误.
1编译错误:
类Book的重复类定义无效:源Book.groovy包含至少两个类Book的定义.其中一个类是使用class语句的显式生成类,另一个是基于文件名从脚本体生成的类.解决方案是更改文件名或更改类名.at line:1,column:1
有人可以解释一下这里发生了什么.
类别Book的无效重复类别定义:
OP的代码清单包含两个部分:
Groovy将您的* .groovy文件视为脚本文件或类定义文件。脚本文件是包含不在类定义内的代码的文件。Groovy编译脚本文件时,它将隐式创建一个类来保存您的代码,并且为隐式类指定Book.groovy文件的名称。
然后,编译器将尝试为groovy脚本中定义的Book类创建一个附加类Book,由于此处实际上存在两个Book类定义,因此会出现错误。
在同一文件中定义Book类和客户端脚本的一种方法是将文件重命名,例如,重命名为BookApp.groovy。注意:如果这样做,则只能从脚本文件中引用Book类型,即使groovy文件是在类路径上找到的,groovy也不会自动找到Book类型。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           2277 次  |  
        
|   最近记录:  |