sealed interface AOrB permits A,B { }
// ...
AOrB aOrB = ...;
// ...
switch (aOrB) {
case A a -> foo(a);
case B b -> bar(b);
// no default case needed, as aOrB *has to* be of type A or B
}
< /code>
К сожалению, сделав то же самое с Kotlin, кажется, невозможно: < /p>
sealed interface AorB {
data class A() : AorB
data class B() : AorB
}
Использование этого интерфейса Kotlin в выражении переключателя Java так же, как и выше, дает мне выражение ошибки компиляции 'Switch'. Не охватывает все возможные входные значения . Нужно ли мне применить некоторые уловки, чтобы сделать запечатанный интерфейс Kotlin исчерпывающим в простой старой Java? Или это ошибка в котлине?
Спасибо за вашу помощь!
Использование рисунков типа Java в выражениях переключателей с запечатанными интерфейсами Java действительно приятно: < /p> [code]sealed interface AOrB permits A,B { } // ... AOrB aOrB = ...; // ... switch (aOrB) { case A a -> foo(a); case B b -> bar(b); // no default case needed, as aOrB *has to* be of type A or B } < /code> К сожалению, сделав то же самое с Kotlin, кажется, невозможно: < /p> sealed interface AorB { data class A() : AorB data class B() : AorB } [/code] Использование этого интерфейса Kotlin в выражении переключателя Java так же, как и выше, дает мне выражение ошибки компиляции 'Switch'. Не охватывает все возможные входные значения . Нужно ли мне применить некоторые уловки, чтобы сделать запечатанный интерфейс Kotlin исчерпывающим в простой старой Java? Или это ошибка в котлине? Спасибо за вашу помощь!
Использование рисунков типа Java в выражениях переключателей с запечатанными интерфейсами Java действительно приятно:
sealed interface AOrB permits A,B { }
// ...
AOrB aOrB = ...;
// ...
switch (aOrB) {
case A a -> foo(a);
case B b -> bar(b);
//...
Использование рисунков типа Java в выражениях переключателей с запечатанными интерфейсами Java действительно приятно:
sealed interface AOrB permits A,B { }
// ...
AOrB aOrB = ...;
// ...
switch (aOrB) {
case A a -> foo(a);
case B b -> bar(b);
//...
У нас есть некоторые проблемы с моим другом. Предположим, у нас есть класс, который реализует подключение к базе данных, например,:
class DB
{
public:
void Connect();
void Disconnect();
// ...
~DB();
};
Сегодня я обновил свою версию Java с 16 до 17, и я обнаружил, что в нем запечатанные классы - новая функция. Я думаю, что это можно объявить так:
public sealed class Main permits AClass, AnotherClass {
}