为什么这个顶级Groovy类不能是静态的?

Ler*_*rve 2 groovy

没有static关键字的示例1 有效.

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

为什么不能在顶级类StaticClassstatic?Eclipse说:

Groovy:类'StaticClass'具有不正确的修饰符static.

该类StaticInnerClass可以修改为static.

示例1有效

Start.groovy

assert "static field" == StaticClass.StaticInnerClass.staticField
Run Code Online (Sandbox Code Playgroud)

StaticClass.groovy

class StaticClass { // Just "class", no "static" modifier
    static class StaticInnerClass {
        static String staticField = "static field"
    }
}
Run Code Online (Sandbox Code Playgroud)

示例2不起作用

Start.groovy

assert "static field" == StaticClass.StaticInnerClass.staticField
Run Code Online (Sandbox Code Playgroud)

StaticClass.groovy

static class StaticClass { // Modifier "static" does not work
    static class StaticInnerClass {
        static String staticField = "static field"
    }
}
Run Code Online (Sandbox Code Playgroud)

可能是相关的问题

groovy静态类

版本

  • Eclipse 3.8.1
  • Groovy-Eclipse插件2.8.0

slo*_*oth 5

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

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

class MyClass {

  static public count = 1

  static incr() {
    count = count + 23
  }
}
Run Code Online (Sandbox Code Playgroud)