Когда вы пишете x = 0
, x
является int ... поэтому вы не можете делать x[age1]
, потому что x
- int
Это происходит, когда Ваш путь к классу во время выполнения отличается, чем Ваш путь к классу времени компиляции.
, Когда Ваше приложение было скомпилировано, класс (названный SomeInterface
в Вашем вопросе) существовал как класс.
то, Когда Ваше приложение работает во время компиляции, SomeInterface
, существует как интерфейс (вместо класса.)
Это заставляет IncompatibleClassChangeError
быть брошенным во время выполнения.
Это - частотность, если у Вас была другая версия файла банки на пути к классу времени компиляции, чем на пути к классу во время выполнения.
Скорее всего, код был скомпилирован против класса в библиотеке, которая была тогда изменена на интерфейс в версии, против которой Вы работаете.
Это кажется, что Вы сделали
class MyClass extends SomeInterface
, когда это должно на самом деле быть
class MyClass implements SomeInterface
, я исправляюсь?
РЕДАКТИРОВАНИЕ: О, Вы говорите, что это время выполнения ошибка и не время компиляции ошибка? Позвольте мне озираться немного...
РЕДАКТИРОВАНИЕ 2: похоже, что у Jared есть корректный ответ. Так или иначе попытка расширить интерфейс на самом деле дала бы" , никакой интерфейс, ожидаемый здесь " сообщение во время компиляции, не" найденный интерфейсом, но классом, не ожидался " ошибка.