groovy静态类

groovy静态类,groovy,Groovy,“static”在这个文件sample.groovy中做什么 static class froob { } groovy代码在有“static”或没有“static”的情况下都可以编译。您指的是静态类还是静态类中的静态方法“main” 关键字“static”表示分配在程序开始时开始,在程序结束时结束。换句话说,无法通过编程方式创建类“froob”的实例,而是在程序存在时自动创建一个实例,直到程序结束 在小样本程序的上下文中,它实际上毫无意义。只有“main”类需要是静态的,因为它需要在执行程序

“static”在这个文件sample.groovy中做什么

static class froob {
}

groovy代码在有“static”或没有“static”的情况下都可以编译。

您指的是静态类还是静态类中的静态方法“main”

关键字“static”表示分配在程序开始时开始,在程序结束时结束。换句话说,无法通过编程方式创建类“froob”的实例,而是在程序存在时自动创建一个实例,直到程序结束


在小样本程序的上下文中,它实际上毫无意义。只有“main”类需要是静态的,因为它需要在执行程序中的任何代码之前“存在”。

这绝对没有区别。在这种情况下,静电干扰被忽略


为了进行测试,我创建了一个groovy类,并将“javap-verboseStaticTest”的输出通过管道传输到一个文件中。然后将“static”放在类def之前,并将其传输到第二个文件。然后,我将这两个文件区分开来。唯一的区别是与长类ID关联的唯一ID,长类ID为每个类生成新的ID。

在Java中,只有内部类可以是静态的。在Groovy 1.7之前,禁止使用内部类,并且声明顶级类static没有任何效果


在Groovy 1.7+中,我希望静态内部类具有与Java中相同的语义。声明顶级类可能没有效果(或被编译器禁止)。

Humm。这似乎是在Groovy控制台静态类froob{static void main(String[]f){println“huh”println new froob().class.name}}中工作/执行的!愚蠢的注释格式化静态类froob{static void main(String[]f){println“huh”println new froob().class.name}}这在groovy 2.5.4中是真的吗?当我在gradle 5.1.1(使用groovy 2.5.4)中尝试这一点时,我得到一个“类“%s”有一个不正确的静态修饰符。”错误。