Запечатанные классы для занятий в разных пакетахJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Запечатанные классы для занятий в разных пакетах

Сообщение Anonymous »

Если я объявлю следующую запечатанную иерархию

Код: Выделить всё

package a;

import b.B;

public sealed interface A permits B {

}

Код: Выделить всё

package b;

import a.A;

public record B() implements A {

}
без использования модулей (без модуля-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 по умолчанию использовать путь к классам при компиляции? Можно ли вообще избежать этого ограничения?
Если нет, не создает ли это прецедент, когда функция в пути к модулю является более гибкой, чем в пути к классу, а это, в свою очередь, - в то время как путь к классам все еще поддерживается, он не является таким первоклассным, как раньше, по сравнению с путем к модулю?

Подробнее здесь: https://stackoverflow.com/questions/684 ... t-packages
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»