Я хочу использовать внутренние классы для создания иерархии объектов, чтобы избежать загромождения API моего текущего проекта. Основная идея заключается в том, чтобы использовать что-то вроде этого:Как вы можете использовать внутренние классы в статическом контексте?
package foo {
public class Bar {
public static const BLUBB:Blubb = new Blubb();
public static const ZONK:Zonk = new Zonk();
}
}
class Blubb {
public const GNARF:Gnarf = new Gnarf();
public const BLUBB_BLAH:String = "blubb-blah";
}
class Gnarf {
public const GNARF_BLAH:String = "gnarf-blah";
}
class Zonk {
public const ZONK_BLAH:String = "zonk-blah";
}
так, что я могу использовать его как someFunction(Bar.BLUBB.GNARF.GNARF_BLAH);
Однако, по-видимому, Actionscript не совсем как эта конструкция (хотя FDT5 компилирует его, не давая Frell о она) и дает мне следующую ошибку во время выполнения:
Exception fault: TypeError: Error #1007: Instantiation attempted on a non-constructor.
at foo::Bar$cinit()
at global$init()
at ...
с остальной частью StackTrace, ведущей к точке, где я первый попытался получить доступ к любому из статических констант Bar
.
Действительно ли невозможно использовать внутренние классы таким образом, или я просто не хватает какого-то тайного вуду?
Моя догадка заключается в том, что секретный вуду - это [статический инициализатор] (http://manishjethani.com/archives/2008/03/31/static-initializers-in-as3), но я не сделал его работу все же. –