如果我声明了以下密封层次结构
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 这个链接和其中的这部分内容:
被许可指定的类必须与超类位于相同的位置: 如果超类位于命名模块中,则必须在同一模块中;如果超类位于未命名模块中,则必须在同一包中。
然而,默认情况下,Maven 是否应该使用类路径进行编译呢?这个限制是否可以完全避免?
如果不能,这是否树立了一个先例,即模块路径上的功能比类路径更加灵活,并且反过来,虽然仍然支持类路径,但与模块路径相比不再是一等公民了?