Неявное приведение значения типа X к несвязанному типу X - PullRequest
8 голосов
/ 03 августа 2011

Привет
У меня есть эта ошибка:

Неявное приведение значения типа X к несвязанному типу X

, где X - типобъект и да, это type X to an unrelated type X.Он появляется 6 раз в моем проекте, в 3 разных файлах .mxml, в элементе script.Это в 3 файлах, которые я не редактирую, и файл, который я изменяю, не имеет связи с 3 файлами с ошибками.

Здесь строка кода с проблемой.

var loadApplicationEvent:LoadApplicationEvent = new LoadApplicationEvent(application);

Он прекрасно работал, когда он компилировал и другие файлы, которые я изменил, это заставило меня и ошибку.

Ошибка из Flash Builder или Flex?Или нет?
Как мне с этим справиться?

Ответы [ 6 ]

11 голосов
/ 27 января 2012

Я сам столкнулся с этой проблемой с помощью Flash Builder 4.5.Тип возвращаемого значения точно такой, каким он должен быть.

Для меня решение состояло в том, чтобы полностью перестроить проект с помощью: Project -> Clean.

6 голосов
/ 23 сентября 2011

Недавно у меня появилась эта проблема с FlashBuilder, и вот что я сделал.

Начиная с:

    protected var _foo:FooType;
(X) public function get foo():FooType { return this._foo; }

(где (X) - ошибка в форме, описанной Snote, с X = FooType)

изменить на:

    protected var _foo:FooType;
    public function get foo():* { return this._foo; }

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

Затем измените его обратно:

    protected var _foo:FooType;
    public function get foo():FooType { return this._foo; }

Сообщение об ошибке исчезает, по крайней мере, на некоторое время.

Пока что эта техника кажется надежной, хотя и надоедливой.

4 голосов
/ 19 сентября 2011

У меня была такая же проблема.Я решил ее, отключив « строгая проверка типов »

Свойства проекта> Компилятор ActionScript> Включить строгую проверку типов

1 голос
/ 03 августа 2011

Это происходит, когда вы пытаетесь присвоить объекту другого типа некоторую переменную.Например, если вы попытаетесь присвоить строковое значение ('4') объекту, где ожидается int (4).Ищите все предоставленные локации и исправьте тип приведения.

0 голосов
/ 16 декабря 2011

В моем случае все шло правильно. Таким образом, похоже, что это проблема IDE, поскольку один и тот же код работал несколько раз, а в другой раз он показал мне эту ошибку. Вы можете попробовать несколько шагов, чтобы решить эту проблему
1. Очистите скомпилированный код и снова скомпилируйте. (На вкладке «Проект» есть четкая опция).
2. Создайте файл с тем же кодом и удалите старый файл.
3. Если все это не работает, создайте другой класс, который наследует базовый класс, и измените ожидаемое значение на *

пример:

   
       public class DataGroupOX extends DataGroup
       .....
       public function set itemRenderer2(value:*):void{
            value = value as IFactory;
            super.itemRenderer = value;
        }


   
0 голосов
/ 04 августа 2011

Это неявное приведение, но я не могу сказать вам точную проблему с информацией, которую вы предоставили.

var loadApplicationEvent:LoadApplicationEvent = new LoadApplicationEvent(application);

Какой тип объекта является «приложением» и какой аргумент ожидается конструктором LoadApplicationEvent? Вот где происходит ваше неявное принуждение. Я предполагаю, что «приложение» - это не тот тип, который ожидается LoadApplicationEvent в его конструкторе.

...