是否允许在 Java 中将顶级 class 声明为静态

is it allowed to declared top level class as static in Java

刚开始接触Akka框架,在他们的documentation中看到了如下一段代码。有人可以解释这段代码吗?

是否允许将顶级 class 声明为静态?

我找到了一个有 similar 问题的帖子。它说顶级 class 不能在 Java 中声明为静态,但在这个例子中顶级代码已被声明为静态!我错过了什么吗?

static class MyActorC implements Creator<MyActor> {
    @Override public MyActor create() {
        return new MyActor("...");
    }
}

Props props2 = Props.create(MyActor.class, "...");
Props props3 = Props.create(new MyActorC());

没有。

只有 class 位成员可以成为 static。成员包括fieldsmethodsnested classesenums ...等

但是 class(顶层)本身不能是静态的(静态也没有意义)。

在您提到的documentation中,他们没有提到MyActorC顶级class, 有吗? (如果您观察到,导入语句位于不同的代码片段中)。

我认为您忽略了这些是代码片段这一事实。您也不能在根级别执行 Props props2 = Props.create(MyActor.class, "..."); 。该代码属于一个方法。

没有, 这不被允许。 顶层支持的访问修饰符是 class 如下:

1) public

2)

3) 摘要

4) 决赛

5) strictfp.

原因:顶级class

因为static关键字是为了提供内存和执行逻辑而不创建对象,所以class不直接有值逻辑,所以static关键字不允许用于外部class和主要如上所述,静态不能在包级别使用。仅在Class级别内使用。