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

标签 groovy

问题

不使用 static 关键字的示例 1 也可以工作。

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

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

Groovy:The class 'StaticClass' has an incorrect modifier static.

StaticInnerClass可以修改为static

示例 1 作品

开始.groovy

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

StaticClass.groovy

class StaticClass { // Just "class", no "static" modifier
    static class StaticInnerClass {
        static String staticField = "static field"
    }
}

示例 2 不起作用

开始.groovy

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

StaticClass.groovy

static class StaticClass { // Modifier "static" does not work
    static class StaticInnerClass {
        static String staticField = "static field"
    }
}

可能相关的问题

groovy static class

版本

  • Eclipse 3.8.1
  • Groovy-Eclipse 插件 2.8.0

最佳答案

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

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

class MyClass {

  static public count = 1

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

关于groovy - 为什么这个顶级 Groovy 类不能是静态的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21776421/

相关文章:

grails - 如何将列表作为参数添加到grails中的sqlQuery?

reflection - 如何在 Groovy 的父静态方法中获取已定义类的名称

hibernate - 查找具有特定Spring安全角色的用户

groovy - 特征中的私有(private)抽象声明给出静态上下文错误

eclipse - 有没有一种简单的方法可以将 griffon 功能添加到 groovy 中?

jenkins - 在 Jenkins 开始另一项工作时如何获取内部错误消息

validation - 是否可以在 Grails 之外使用 Grails 验证?如何?

groovy - 将闭包范围设置为调用方法

json - Jenkins 管道 NotSerializableException : groovy. json.internal.LazyMap

Groovy:如何获取 ?private? 的值闭包变量