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

允许在Java中将顶级类声明为静态类吗,java,akka,reactive-programming,Java,Akka,Reactive Programming,我刚开始使用Akka框架,在他们的。有人能解释一下这段代码吗 允许将顶级类声明为静态类吗 我找到了一条有问题的线索。它说在Java中顶级类不能声明为静态的,但在本例中顶级代码已声明为静态的!我遗漏了什么吗 static class MyActorC implements Creator<MyActor> { @Override public MyActor create() { return new MyActor("..."); } } Props

我刚开始使用Akka框架,在他们的。有人能解释一下这段代码吗

允许将顶级类声明为静态类吗

我找到了一条有问题的线索。它说在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());
静态类MyActorC实现了Creator{
@重写公共MyActor create(){
返回新的MyActor(“…”);
}
}
Props props2=Props.create(MyActor.class,“…”);
Props props3=Props.create(new MyActorC());

只有类成员可以是静态的。成员包括
字段
方法
嵌套类
枚举
…等等

但是类(顶级)本身不能是静态的(也没有任何静态的意义)


在你提到的课程中,他们没有提到MyActorC是一个顶级课程,是吗?(如果您注意的话,import语句位于不同的代码段中)。

我认为您忽略了这是代码段这一事实。您不能执行
Props-props2=Props.create(MyActor.class,“…”)在根级别。该代码属于方法内部。

否, 这是不允许的。 顶级are类支持的访问修饰符如下:

1) 公开的

(二)

3) 摘要

4) 决赛

5) 严格的

理由:顶级班


由于static关键字用于提供内存和执行逻辑,而不创建对象,因此类没有直接的值逻辑,因此外部类不允许使用static关键字,主要如上所述,static不能在包级别使用。它只在班级级别内使用。

是的。但是如果这个例子适当缩进的话会有帮助。。。并显示了封闭的类声明。