Groovy中保留的类名

时间:2015-02-24 21:03:41

标签: groovy

如果我有一个名为Character.groovy的类(没有显式构造函数)并尝试实例化它,我会收到一条消息:

groovy.lang.GroovyRuntimeException: Could not find matching constructor for: java.lang.Character()

但是如果我将类名更改为Characterr.groovy,那么我可以实例化一个对象并按预期使用它。那么我在Groovy类中不能使用保留字吗?如果是这样,为什么Character是其中之一?

2 个答案:

答案 0 :(得分:3)

它不是保留的类名,但是已经有一个具有该名称的类(java.lang.Character)被导入,因为包java.lang会在java中自动导入。

这种情况可能会一直发生,特别是如果您是一名Java开发人员并且不习惯于java.io包裹等由groovy为您自动导入(例如File)(另请参阅What packages does 1) Java and 2) Groovy automatically import?

有三种方法:

  • java方式:使用全名,即包和类名称来表示您的类。例如org.myrpg.Character

  • groovy方式:使用新名称导入类。例如import org.myrgp.Character as RPGChar然后使用RPGChar代替。{/ p>

  • zen方式:通常情况下,不值得使用hastle并且更容易重命名。如果你曾经绊过这一次,那么你再次绊倒这个机会非常高,只有像@CompileStatic或IDE 这样的东西可以在编译时或在编写时注意到这一点。

答案 1 :(得分:1)

http://groovy.codehaus.org/Reserved+Words 这些是保留的关键字

http://docs.oracle.com/javase/8/docs/api/java/lang/Character.html

我相信的字符是java中的对象包装类,这就是为什么你不能使用它。您不能使用java中自动包含的任何java类名称