Использование рисунков типа Java в выражениях переключателей с запечатанными интерфейсами Java действительно приятно: < /p>
Код: Выделить всё
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? Или это ошибка в котлине?
Подробнее здесь:
https://stackoverflow.com/questions/793 ... xpressions