java - Scala/Java 子目录名称中带有点

标签 java scala classloader sbt

由于某些原因,我需要在项目中使用包的长名称。喜欢:

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/

相关文章:

string - 在程序中检查输入字符串是否为路径的最佳方法是什么?

java - 类级别注释的定义类加载器是否始终是该类的启动类加载器的父级?

android - 为什么ClassLoader.loadClass在android中总是抛出ClassNotFoundException?

java - 为什么我不能在需要 List<X> 的地方使用实现 List<X> 的类?

java - 使用 Spring 配置文件的 JBoss 7 多个 log4j 配置

java - IntelliJ IDEA 15 中的无限目录递归

java - 如何在Java虚拟机中查找类的实例?

java - "we change behavior of any object at runtime in java"是什么意思

scala - 如何将 mapPartitions 的 Iterator[String] 结果写入一个文件?

json - 从JSON数组中选择一个特定的值