Я гораздо лучше знаком с семантикой Java класса и интерфейса, чем с семантикой Actionscript, но у меня есть пример кода, который работает в Java и не работает в Actionscript.Это уныние является серьезной проблемой, поскольку я пытаюсь сгенерировать код для создания своих объектов-значений Actionscript из DTO Java, и если семантика не совпадает, у меня большие проблемы.
Вот код, который работает на Java ине удается скомпилировать в Actionscript:
Интерфейс A:
public interface Ia {
function makeCopy():Ia;
}
Интерфейс B:
public interface Ib extends Ia {
}
Класс B (не компилируется):
public class B implements Ib {
public function makeCopy():Ib {
return null;
}
}
Я не понимаю, почему класс B выдает ошибку компиляции о несовместимой сигнатуре для "makeCopy", когда интерфейс B явно расширяет интерфейс A ... таким образом, нет нарушения типа или несовместимости.Если это всего лишь ограничение в ActionScript, может ли кто-нибудь предложить способ перекодирования?
ПРИМЕЧАНИЕ. Я уже пытался изменить интерфейс B на этот, и он вызвал ошибку в интерфейсе B (который работает в Java):
public interface Ib extends Ia {
function makeCopy():Ib;
}