这个Groovy脚本运行正常:
println 0;
class MyClass
{
public MyClass(int j) {};
public MyClass method() {return this};
}
Run Code Online (Sandbox Code Playgroud)
这个失败并出现编译错误("意外令牌:公共行:5,列:4")
println 0;
class myClass
{
public myClass(int j) {};
public myClass method() {return this};
}
Run Code Online (Sandbox Code Playgroud)
唯一的区别是类名的大写.我知道大会的名称是大写的,但我认为这只是一个惯例.究竟是什么导致了编译错误?
根据2008年的一个Groovy邮件列表帖子,提出了类似的问题,Paul King解释说:
是的,语法目前仅在声明中查找大写类型(除了基本类型).
在最新的,未解决的关于小写类名的Groovy JIRA票证中,blackdrag评论说:
问题是在Groovy(与Java不同)变量名称中,方法名称和类名称可以共享上下文,使其不明确.
除非对标记化器进行更深入的探索,否则由于Groovy的语法灵活性,我将把它当作Java和Groovy之间的另一个小错误.而不是彻底实现一种方法来判断令牌是否是此上下文中的类型或方法名称,Groovy采用快捷方式,并假设它可以是类型名称,如果令牌匹配基元或以大写字母开头,传统的Java类型会.
归档时间: |
|
查看次数: |
839 次 |
最近记录: |