Код: Выделить всё
public interface MyInterface {
private void myPrivateMethod() {
// ... Some code ...
}
default void interfaceMethod() {
myPrivateMethod();
}
}
Код: Выделить всё
public s() { //()V
aload0 // reference to self
invokespecial c1/q.o()V
return
}
java.lang.InсовместимыйClassChangeError: найден интерфейс c1.q, но класс был ожидается
на c1.q.s (неизвестный источник: 1)
Похоже, что ignorespecial используется вместо ignoreinterface, когда this является интерфейсом, а не классом.
Код: Выделить всё
interfaceMethodКод: Выделить всё
public interface MyClass implements MyInterface {
@Override public void interfaceMethod() {
MyInterface.super.interfaceMethod();
// ... other code ...
}
}
Я не уверен, кто это делает здесь ошибка, и я не могу воспроизвести проблему, несмотря ни на что. Я сомневаюсь в R8, но у меня есть отчеты о сбоях только с нескольких устройств. У нас есть несколько отчетов с одних и тех же устройств, поэтому создается впечатление, что приложение на них постоянно дает сбой. Все устройства довольно новые и работают под управлением Android 14.
Я подумываю превратить myPrivateMethod в статический метод в следующем выпуске, но мне бы хотелось получить объяснение.
Подробнее здесь: https://stackoverflow.com/questions/790 ... s-expected
Мобильная версия