在Groovy中类和文件的对应关系并不像Java中那么固定(Java中一个文件只能有一个声明为public的类和其他一些非公共的类和内嵌类) 。在同一个groovy文件中可以包含多个public的类定义。具体规则如下:
如果在一个groovy文件中没有任何类定义,它将被当做script来处理,也就意味着这个文件将被透明的转换为一个Script类型的类,这个自动转换得到的类将使用原始的groovy文件名(去掉扩展名,没有包名,在default包中)作为类的名字。groovy文件的内容被打包进run方法,另外在新产生的类中被加入一个main方法以进行外部执行该脚本。 如果在groovy文件正好有一个类的定义,并且该类的名字与文件名称相同,那么这就和java中的类与文件的一一对应关系相同 在一个groovy文件中可以包含多个不同可见性的类定义,并且没有强制性的要求其中有一个类的类名与文件名相同。groovyc编译器会很乐于把该文件中定义的所有的类都编译成*.class文件。如果你希望能够直接调用这个groovy script,比如说在使用groovy命令行或者在某个IDE中执行,那么你应该在该文件中的第一个类中定义一个main方法 在一个groovy文件中可以混合类的定义和脚本定义。在这种情况下,那些脚本代码将会变成直接调用的主类,所以在这种情况下你不应该再定义一个和文件同名的类在没有经过明确的编译过程即执行时,groovy将通过文件名来查找类。在这种情况下,名称将会很重要。Groovy只能找到那些和文件名匹配的类。在找到这种名字匹配的类时,找到的文件中定义的其他类将被解析并变得对groovy可见。
原文:Groovy in Action (page:190 )
总结以上是内存溢出为你收集整理的Groovy中文件和编译后的Java 字节码中类的对应关系(翻译)全部内容,希望文章能够帮你解决Groovy中文件和编译后的Java 字节码中类的对应关系(翻译)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)