编辑:我正在简化这个问题,因为我的选票没有得到答案
我从Windows上的命令行调用一个groovy脚本(groovy ClassIssue.groovy
)
Groovy版本2.4.5 JVM 1.8.0_51
还在使用Groovy 2.4.6的Linux上进行了测试
为什么这样做:
class Person {
String name
Person() {}
}
Person p = [name: 'Jahg']
但这不是:
class person {
String name
person() {}
}
person p = [name: 'Jahg'] // this line throws an exception
唯一的区别是课程以小写字母开头。
答案 0 :(得分:0)
(应该是评论,使用答案进行格式化)
Groovy编译器将很多meta programming magic转换为将脚本/ groovy类转换为JVM的Java类。处理属性和方法有相当多的规则。
您当前的脚本首先成为一个类。其名称源自scriptname。在该类中,为mc分配了数组。
mc = ['123', 'Jahg']
然后它变成对方法myClazz
当您使用大写字母命名该类时,此
myClazz mc
由于没有myClazz
方法