我刚开始使用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());
答案 0 :(得分:6)
NO。
只有班级成员可以是static
。成员包括fields
,methods
,nested classes
,enums
等。
但是类(顶级)本身不能是静态的(并且静态也没有意义)。
在您引用的documentation中,他们不提及MyActorC
是顶级课程,有吗? (如果您观察,导入语句位于不同的代码段中。)
答案 1 :(得分:1)
我认为您错过了这些是代码段的事实。你也不能在根级做Props props2 = Props.create(MyActor.class, "...");
。该代码属于方法。
答案 2 :(得分:0)
不, 这不被允许。 顶级支持的访问修饰符是class:
1)公开
2)
3)摘要
4)最终
5)strictfp。
原因:顶级课程
因为static关键字用于在不创建Object的情况下提供内存和执行逻辑,所以类没有直接的值逻辑,因此,外部类不允许使用static关键字,并且如上所述,主要不能使用static在包装级别。仅在课程级别内使用。