【问题标题】:Package-private class visible to some other packages (with same name) under a different source folder包私有类对不同源文件夹下的某些其他包(具有相同名称)可见
【发布时间】:2015-08-06 19:54:29
【问题描述】:

当我在 Java 中对包和包私有类进行一些测试时,我注意到一件有趣的事情。以下是我的项目源码结构,源码文件夹src下包com.test.pkg中的类MyTestClass.java是包保护类。据我了解,这不应该在这个包之外访问。但是,有趣的是MyTestClass.java 类也可以在源文件夹test 下的com.test.pkg 中访问。仅当包名称相同时才会发生这种情况,尽管它们位于不同的源文件夹中。

谁能告诉我为什么会这样?

TestProject
|
-src
  -com.test.pkg
    -MyTestClass.java
-test
  +com.test.pkg

【问题讨论】:

  • 为什么不呢,它是同一个包......它们是否在不同的目录或jar中都没关系。无论如何都是同一个包。
  • 感谢您的信息。如果是这样,源文件夹的来源有什么用(src,在这种情况下是测试)。这只是为了组织目的吗?
  • @k0der - 当您import 上课时,您是否在课程路径中包含src?不对吧?。你从com.test....开始。所以,srctest 处于同一级别,代表一个global 父目录。所以,包是一样的。
  • 那只是为了组织你的测试和应用程序代码...
  • @TheLostMind - 明白了。谢谢!

标签: java packages package-private


【解决方案1】:

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

【讨论】:

  • 感谢您的信息。如果是这样,源文件夹的来源有什么用(src,在这种情况下为测试)。这只是为了组织目的吗?
  • 是的,完全正确。通常,您将实际代码保存在 src 文件夹中,并将测试类保存在 test 文件夹中(尽管实际类和测试类显然属于同一个包)。如果将它们保存在同一个文件夹中,将会一团糟,您将无法快速区分测试类和实际类。
猜你喜欢
  • 2017-02-10
  • 2020-03-30
  • 1970-01-01
  • 2018-08-14
  • 1970-01-01
  • 2020-06-28
  • 2017-09-30
  • 2014-08-25
  • 1970-01-01
相关资源
最近更新 更多