Flex Compiler, не константа времени компиляции, а только в экземплярах методов
У меня очень странная проблема с компилятором flex (использующей Flash Builder 4.5), с которой я никогда раньше не сталкивался.
Я пытаюсь создать экземпляр класса (который существует в том же пакете), и компилятор не распознает класс как константу времени компиляции, но только в методах экземпляра. Методы класса (статические) будут компилироваться без проблем.
Этот класс используется повсеместно без проблем. Просто в этом одном месте он не будет компилироваться в экземплярах методов. Не имеет смысла.
Я перепробовал все, что мог придумать...
- Добавлен импорт для UploadDate (хотя класс находится в том же пакете)
- Чистый построенный проект (и все родительские / вспомогательные проекты)
- Кэш модели удаленного кода (.metadata/.plugins/com.adobe.flexbuilder.codemodel/*)
- Удален весь сгенерированный кеш активов (.../com.adobe.flexide.editorcore/GeneratedAssets/*)
- Скомпилировано с различными Flex SDK (3.2, 3.5, 3.6)
Вот код:
package classes
{
import classes.UploadDate;
[Bindable]
public class UserImages {
....
//this compiles with no errors
public static function classMethod():void {
var ud:UploadDate = new UploadDate();
}
//this will not compile
public function instanceMethod():void {
//1046: Type was not found or was not a compile-time constant: UploadDate
var obj:UploadDate = new UploadDate();
}
//this is the ugly workaround I am currently using (works fine at Runtime)
public function hackyMethod():void {
var Def:Class = getDefinitionByName("classes.UploadDate") as Class;
var obj:* = new Def();
}
}
}
И класс UploadDate:
package classes
{
[Bindable]
public class UploadDate {
public var date:String;
public var numImages:int;
public UploadDate() {
}
}
}
Кто-нибудь видел это раньше?
Спасибо Мэтт
1 ответ
"Я столкнулся с такой проблемой при использовании статических констант в сигнатурах метода или свойствах экземпляра. Решением здесь было переименование класса, который содержит константы, чтобы он был в алфавитном порядке перед всеми остальными классами. Попробуйте переименовать UploadDate в AUploadDate". - Дженс Струве 18 августа 2011 года в 7:12