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

时间:2015-08-24 02:15:52

标签: java akka reactive-programming

我刚开始使用Akka框架,我在documentation中看到了以下代码。有人可以解释一下这段代码吗?

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

我发现了一个带有similar问题的帖子。它表示顶级类不能在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());

3 个答案:

答案 0 :(得分:6)

NO。

只有班级成员可以是static。成员包括fieldsmethodsnested classesenums等。

但是类(顶级)本身不能是静态的(并且静态也没有意义)。

在您引用的documentation中,他们提及MyActorC顶级课程,有吗? (如果您观察,导入语句位于不同的代码段中。)

答案 1 :(得分:1)

我认为您错过了这些是代码段的事实。你也不能在根级做Props props2 = Props.create(MyActor.class, "...");。该代码属于方法。

答案 2 :(得分:0)

不, 这不被允许。 顶级支持的访问修饰符是class:

1)公开

2)

3)摘要

4)最终

5)strictfp。

原因:顶级课程

因为static关键字用于在不创建Object的情况下提供内存和执行逻辑,所以类没有直接的值逻辑,因此,外部类不允许使用static关键字,并且如上所述,主要不能使用static在包装级别。仅在课程级别内使用。