为什么可以';这个顶级Groovy类不是静态的吗?

为什么可以';这个顶级Groovy类不是静态的吗?,groovy,Groovy,问题 示例1没有static关键字就可以工作 带有static关键字的示例2不起作用 为什么顶级类StaticClass不能static?Eclipse说: Groovy:类“StaticClass”的static修饰符不正确 类StaticInnerClass可以修改为static 示例1有效 Start.groovy assert "static field" == StaticClass.StaticInnerClass.staticField assert "static field"

问题

示例1没有
static
关键字就可以工作

带有
static
关键字的示例2不起作用

为什么顶级类
StaticClass
不能
static
?Eclipse说:

Groovy:类“StaticClass”的static修饰符不正确

StaticInnerClass
可以修改为
static

示例1有效

Start.groovy

assert "static field" == StaticClass.StaticInnerClass.staticField
assert "static field" == StaticClass.StaticInnerClass.staticField
StaticClass.groovy

class StaticClass { // Just "class", no "static" modifier
    static class StaticInnerClass {
        static String staticField = "static field"
    }
}
static class StaticClass { // Modifier "static" does not work
    static class StaticInnerClass {
        static String staticField = "static field"
    }
}
示例2不起作用

Start.groovy

assert "static field" == StaticClass.StaticInnerClass.staticField
assert "static field" == StaticClass.StaticInnerClass.staticField
StaticClass.groovy

class StaticClass { // Just "class", no "static" modifier
    static class StaticInnerClass {
        static String staticField = "static field"
    }
}
static class StaticClass { // Modifier "static" does not work
    static class StaticInnerClass {
        static String staticField = "static field"
    }
}
可能相关的问题

版本

  • Eclipse 3.8.1
  • Groovy Eclipse插件2.8.0

只有嵌套类可以是静态的(就像在Java中一样)

如果您只是不希望类是可实例化的,可以使用static关键字限定类中的各个定义,例如:

class MyClass {

  static public count = 1

  static incr() {
    count = count + 23
  }
}

您仍然可以实例化该类。