Исключение компилятора при использовании сопоставления шаблонов Java 21 в AndroidAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Исключение компилятора при использовании сопоставления шаблонов Java 21 в Android

Сообщение Anonymous »

Я видел, как в Java 21 появилось сопоставление шаблонов в операторах Switch. Это идеально подходило для моего кода, и я хотел использовать его вместо набора if-if-else.
Вот созданный мной тестовый класс:

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

public class Test {
static  void checkType(T value) {
switch (value) {
case Integer i -> System.out.println("Integer");
case String s -> System.out.println("String");
default -> throw new IllegalArgumentException("Unsupported type: " + value.getClass());
}
}

public static void main(String[] args) {
checkType("Some string");
checkType(21);
}
}

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

java Test.java
имеет следующий вывод:

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

String
Integer
Когда я пытаюсь сделать то же самое в Android, я получаю следующую ошибку компиляции:

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

An exception has occurred in the compiler (21.0.3). Please file a bug against the Java compiler via the Java bug reporting page (https://bugreport.java.com) after checking the Bug Database (https://bugs.java.com) for duplicates. Include your program, the following diagnostic, and the parameters passed to the Java compiler in your report. Thank you.
com.sun.tools.javac.code.Symbol$CompletionFailure: class file for java.lang.runtime.SwitchBootstraps not found
Оба используют Java 21.0.3, а я пробовал с 22.0.1. Я пробовал как с Oracle JDK, так и с OpenJDK от Microsoft.
Я также установил соответствующие параметры в свой build.gradle.kts (

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

compileOptions
& kotlinOptions).

Подробнее здесь: https://stackoverflow.com/questions/786 ... in-android
Ответить

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

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

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

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

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