2013-11-22 168 views
1

我有一个项目P1,它有一个A.B.C包,里面有一个MyClass1类。这个类有默认范围。因此,它在项目P1中的任何其他包中都不可见,并且对于其他任何项目都是不可见的。在不同的项目中使用相同的java包

但是,如果我创建另一个包含同名A.B.C的项目P2,则可以访问类MyClass1。这听起来很糟糕,因为任何想使用未暴露的API的人都可以创建一个具有相同名称的包并获得访问权限。

这是预期的行为?

-

另一个相关的问题:有什么用Java项目的水平范围是什么?

+0

号你为什么要这么做? – 2013-11-22 14:03:31

+0

@LutzHorn在我的项目中,一个包几乎没有作为API的一部分公开的文件。为了管理文件的数量,我尝试将一些文件移动到另一个软件包。但是这要求这些类(以前未公开)公开,这会稀释我的API。 我正在使用Eclipse Juno – user673218

回答

5

这是预期的行为?

是。这就是为什么你不能用java.*来命名你的包。

Java中是否有任何项目级作用域?

+0

'是的。这就是为什么你不能用java命名你的软件包。*' 但是我可以在项目P2中创建一个包A.B.C并访问MyClass。任何方式,我可以限制吗? – user673218

+1

@ user673218我不这么认为。只有'java'包是受限制的。 –

相关问题