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() это нормальный метод. Это ошибка, которая может быть легко пропущена при просмотре вашего кода, и будет исправлена, если вы удалите и перезапишите все.

Я до сих пор не знаю, почему это произошло или как. Тем не менее, я смог заставить его работать снова.

Моя идея состояла в том, чтобы удалить все методы из класса и добавить заглушки для всех методов в интерфейсе. Затем добавьте фактические методы по одному, пока я не смогу увидеть, где, возможно, возникла проблема.

Как ни странно, после восстановления методов по одному и тестирования каждый раз, теперь это работает.

Класс (по сути, код, вероятно, выложен немного по-другому) одинаков, и теперь он работает.

Я все еще поражен, но, по крайней мере, я могу двигаться дальше.

Надеюсь, это может кому-нибудь помочь.

Другие вопросы по тегам