如果我声明遵循密封的层次结构
package a;
import b.B;
public sealed interface A permits B {
}
package b;
import a.A;
public record B() implements A {
}
不使用模块(没有module-info.java)并尝试用Maven编译它我得到
[ERROR] .../src/main/java/a/A.java:[5,35] class a.A in unnamed module cannot extend a sealed class in a different package
我知道https://openjdk.java.net/jeps/409和本节:
permit 指定的类必须位于超类附近:在同一个模块中(如果超类在命名模块中)或在同一个包中(如果超类在未命名模块中)。
但是,默认情况下 Maven 不应该在编译时使用类路径吗?可以完全避免这种限制吗?
如果不是,这是否开创了一个先例,模块路径上的功能比类路径上的功能更灵活,反过来 - 虽然仍然支持类路径,但与模块路径相比,它不像以前那样是一等公民?