为什么不大写类名会导致编译器错误?

时间:2015-01-23 19:02:16

标签: groovy

这个Groovy脚本运行良好:

println 0;
class MyClass
{
   public MyClass(int j) {};
   public MyClass method() {return this};
}

这一个失败并出现编译错误(“意外令牌:公共行:5,列:4”)

println 0;
class myClass
{
   public myClass(int j) {};
   public myClass method() {return this};
}

唯一的区别是类名的大写。我知道大会的名称是大写的,但我认为这只是一个惯例。究竟是什么导致编译错误?

1 个答案:

答案 0 :(得分:7)

根据2008年Groovy mailing list thread提出的类似问题,Paul King解释说:

  

是的,语法目前只在声明中寻找大写类型(除了基本类型)。

在最新的unresolved Groovy JIRA ticket关于小写的类名,blackdrag评论:

  

问题在于Groovy(与Java不同)变量名称,方法名称和类名称可以共享上下文,使其不明确。

除了对标记化器的深入探索之外,由于Groovy的语法灵活性,我将把它当作Java和Groovy之间的另一个小错误。而不是彻底实现一种方法来判断令牌是否是此上下文中的类型或方法名称,Groovy采用快捷方式,并假设它可以是类型名称,如果令牌匹配基元或以大写字母开头,传统的Java类型会。