groovy静态类

时间:2009-05-11 16:42:08

标签: groovy

这个文件中的'静态'做了什么,sample.groovy?

static class froob {
}

groovy代码使用'static'编译好或没有它。

3 个答案:

答案 0 :(得分:5)

绝对没有区别。这种情况下的静态被忽略了。

为了测试,我创建了一个groovy类,并将“javap -verbose StaticTest”的输出传送到文件。然后在类def之前输入“static”并将其传送到第二个文件。然后我把两个文件分开了。唯一的区别是那些与为每个类生成新的长类ID相关联的唯一ID。

答案 1 :(得分:2)

您是指静态类中的静态类或静态方法“main”吗?

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

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

答案 2 :(得分:1)

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

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