在Java中是否可以定义外部类(即顶级),使其仅对此文件可见?我想在c ++中使用静态关键字来限制文件范围内的可见性。
如果没有,为什么会这样,解决方法是什么?
感谢。
答案 0 :(得分:3)
不,你所要求的是不可能的。您可以通过使类成为私有静态内部类来隐藏类,或者您可以将它们设置为顶级,受包保护(默认)的类,并将一小组涉及的类放入它们自己的包中。
答案 1 :(得分:1)
如果没有,那为什么......
获得像这样的语言设计问题的真正答案的唯一方法是向语言设计师询问。
然而,以下原因可能包括它。
一种试图支持太多东西的编程语言将变得太复杂,无法指定和实现,并且使复杂的程序员无法理解。前者导致语言异常和编译器错误,后者导致应用程序出错。
Java语言设计者认为4级访问/可见性就足够了; public
,protected
,包私有和private
。
Java语言设计人员设计用于未在离散文件中组织/存储源代码的情况。事实证明(几乎)每个人仍然使用离散文件来表示源代码......但他们不知道(20多年前)。
答案 2 :(得分:0)
我不确定你真正要做的是什么,但是,要详细说明@Ernest,你可以创建一个包访问类,使它的构造函数私有化以实现彻底性,并且在该类中没有更多内容。然后,有一个带有“真实”东西的私有静态内部类。 e.g。
class Foo { // "package" access
private Foo() {}
private static class Bar {
// real stuff here...
}
}
P.S。对此的赞成可能应该转到欧内斯特,我只是详细阐述了他的想法。