据我所知,我们只能制作内部类private
。
有没有办法在java中创建顶级类private
?
答案 0 :(得分:3)
不,如JLS中所述:
并非所有修饰符都适用于所有类声明。 访问修饰符public仅适用于顶级类(第7.6节) 和成员类(§8.5,§9.5),并在§6.6,§8.5和 第9.5节。受保护的访问修饰符和私有仅适用于 直接封闭类声明中的成员类(第8.5节) 并在§8.5.1中讨论。访问修饰符静态仅适用 成员类(§8.5,§9.5)。如果出现编译时错误 同一个修饰符在类声明中出现不止一次。
答案 1 :(得分:1)
不,你不能这样做。想一想。如果你的外层阶级是私人的,那么它是谁?没有人可以访问它,根本不会使用该类。
答案 2 :(得分:1)
不,如果是这样的话,这将是一个非常毫无意义的课程,因为没有人可以访问它!
编辑:嗯,有可能通过反序列化和反射以及可能非私有的内部类来访问它(参见Tom的评论。)然而,这些都不是很好的方法来实现它和这是JLS不允许它发生的完美的(我个人认为最好的)选择。答案 3 :(得分:1)
如果某个类是私有的,那么即使来自同一个包,它也无法从任何其他类中使用。私人课程也可能不存在。