Package-private class 对不同源文件夹下的一些其他包(同名)可见
Package-private class visible to some other packages (with same name) under a different source folder
当我在 Java 中对包和包私有 classes 进行一些测试时,我注意到一件有趣的事情。以下是我的项目源结构,源文件夹src
下包com.test.pkg
中的classMyTestClass.java
是包保护的class。根据我的理解,这不应该在这个包之外访问。但是,有趣的是 MyTestClass.java
class 也可以在源文件夹 test
下的 com.test.pkg
中访问。仅当包名称相同时才会发生这种情况,尽管它们位于不同的源文件夹中。
谁能告诉我为什么会这样?
TestProject
|
-src
-com.test.pkg
-MyTestClass.java
-test
+com.test.pkg
在这种情况下,源目录根本不重要。重要的是:包名称相同,因此 类 属于同一个包 - 一切都是正确的。
当我在 Java 中对包和包私有 classes 进行一些测试时,我注意到一件有趣的事情。以下是我的项目源结构,源文件夹src
下包com.test.pkg
中的classMyTestClass.java
是包保护的class。根据我的理解,这不应该在这个包之外访问。但是,有趣的是 MyTestClass.java
class 也可以在源文件夹 test
下的 com.test.pkg
中访问。仅当包名称相同时才会发生这种情况,尽管它们位于不同的源文件夹中。
谁能告诉我为什么会这样?
TestProject
|
-src
-com.test.pkg
-MyTestClass.java
-test
+com.test.pkg
在这种情况下,源目录根本不重要。重要的是:包名称相同,因此 类 属于同一个包 - 一切都是正确的。