VerifyError: Ошибка № 1053: недопустимое переопределение (конструктора) в (классе)
Я использую Flash Builder 4.7 и натолкнулся на причудливую проблему, без каких-либо изменений в классе, в которой это происходит:
VerifyError: Error #1053: Illegal override of HUDScreen in mobile_ui.screens.HUDScreen.
Этот класс расширяет Sprite и реализует интерфейс. Насколько я знаю, все методы в интерфейсе имеют правильные прототипы. В этом классе нет переопределенных свойств или функций. Мы также используем robotlegs для внедрения зависимостей, если это актуально.
Определение класса
public class HUDScreen extends Sprite implements IHUDScreen
{
}
Конструктор
public function HUDScreen()
{
}
Определение интерфейса
public interface IHUDScreen extends IEventDispatcher
{
}
Я попытался очистить проект, я удалил и повторно импортировал проект, я изменил пакет с ui.screens.HUDScreen на mobile_ui.screens.HUDScreen. Ничто не изменило ошибку.
Любые другие предложения будут с благодарностью на этом этапе!
Спасибо за ваше время.
Изменить: я добавил определение класса, определение интерфейса и конструктор.
ОБНОВЛЕНИЕ: я смог обойти эту проблему, я обрисовал в общих чертах, что я сделал в своем ответе ниже. Меня все еще интересуют чьи-либо мысли или идеи о том, как это могло произойти, или, возможно, более конкретное решение.
Еще раз спасибо всем, кто нашел время, чтобы просмотреть этот вопрос!
2 ответа
Кажется, это вызвано неправильной реализацией интерфейса, который компилятор не обнаруживает. Следующий фрагмент кода вызывает ошибку:
public class Foo implements IFoo
{
public function bar():String { return ""; }
}
public interface IFoo
{
function get bar():String;
}
Проблема вызвана тем, что IFoo.bar
добытчик, но Foo.bar()
это нормальный метод. Это ошибка, которая может быть легко пропущена при просмотре вашего кода, и будет исправлена, если вы удалите и перезапишите все.
Я до сих пор не знаю, почему это произошло или как. Тем не менее, я смог заставить его работать снова.
Моя идея состояла в том, чтобы удалить все методы из класса и добавить заглушки для всех методов в интерфейсе. Затем добавьте фактические методы по одному, пока я не смогу увидеть, где, возможно, возникла проблема.
Как ни странно, после восстановления методов по одному и тестирования каждый раз, теперь это работает.
Класс (по сути, код, вероятно, выложен немного по-другому) одинаков, и теперь он работает.
Я все еще поражен, но, по крайней мере, я могу двигаться дальше.
Надеюсь, это может кому-нибудь помочь.