由于某些原因,我需要在项目中使用包的长名称。喜欢:
com.example.foo.bar.bazz.anotherlongsubpart.andfinallytheactualpackagname
因此考虑到名称约定(至少我对 Java 中的名称约定的了解),我必须创建适当的目录结构,用斜杠替换点:
com/example/foo/bar/bazz/anotherlongsubpart/andfinallytheactualpackagname
对我来说,它看起来太丑了:)所以我尝试只用斜线替换点的部分:
com.example.foo.bar.bazz.anotherlongsubpart/andfinallytheactualpackagname
换句话说,我这里有一个长名称为“com.example.foo.bar.bazz.anotherlongsubpart”的包/目录,另一个名称为“andfinallytheactualpackagname”。这样做合法吗?我尝试使用 Simple Build Tool 编译所有这些东西,并对其运行单元测试。而且效果很好。正如我会用更普通的方式用斜线命名它一样。
正如我的实验表明它至少与 SBT 配合得很好。但我不确定这样的做法是否会导致进一步的问题?也许在不同的环境中具有不同类型的类加载器等?
最佳答案
在 Scala 中,目录名称不必映射到源文件中声明的包,编译器不会以任何方式强制执行此操作。
在 Java 中,你不能这样做。源文件必须位于正确的目录(由源文件声明的包名称指示)才能编译。
所以,如果你使用 Scala,你可以随心所欲地做,但在 Java 中,不,你不能。
关于java - Scala/Java 子目录名称中带有点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19202055/