在Java / Groovy,afaik中,必须在相应的文件夹中定义一个包。结果是所有存储在/a/b/c中的类文件都以package a.b.c行开头。这仍然有必要吗?关于约定而不是配置,这不是DRY ...

当这个包定义是可选的时,会出现什么样的问题?

最佳答案

尽管目录结构与包结构相匹配是常规做法,但如果它们不匹配,则会出现某些问题,但实际上并不需要它们匹配。 Java也是如此(尽管很多人没有意识到这一点)。

下面是一个演示此情况的示例。

groovydemo $ mkdir classes
groovydemo $
groovydemo $ cat src/groovy/com/demo/SomeClass.groovy
package com.somethingotherthandemo

class SomeClass {}
groovydemo $
groovydemo $ groovyc -d classes/ src/groovy/com/demo/SomeClass.groovy
groovydemo $ find classes -type f
classes/com/somethingotherthandemo/SomeClass.class

10-05 22:38