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

在这种情况下,源目录根本不重要。重要的是:包名称相同,因此 类 属于同一个包 - 一切都是正确的。