说,Child类继承了父类,而父类继承了Spark TextArea类。现在从mxml文件(在FLEX4中),我创建了Child类的多个对象。父类有几个静态属性,其值由私有方法设置,从构造函数调用。现在的问题是:每次创建Child类对象时,都会设置所有这些静态属性吗?
如果回答是肯定的,那么父类静态属性是否可能只设置一次而不依赖于创建子类对象的数量。
请提供任何建议或提示
提前致谢。
答案 0 :(得分:0)
如果要从对象的构造函数或从构造函数调用的方法设置静态变量,那么是的,每次都会设置它们。为了防止这种情况,只需检查变量是否已设置。
public class Foo {
public static var bar:Object;
public Foo(value:Object) {
if (!bar) {
bar = value;
}
}
}
答案 1 :(得分:0)
首先确定那些静态成员是否真的非常重要,以便存储为静态因为静态与一个类相关联而不是一个实例它通常是一个信号,你可能正在做一些你不应该做的事情,如果实例正在修改或阅读静态成员。如果需要与实例共享该信息,则可能应该使用工厂方法。但是,如果您确定应该这样做,那么您可以使用静态初始化程序块在加载类时初始化成员。不足之处是该区块引发了一个很难追查的例外情况:
public class SomeObject {
private const _someStaticMember : String;
private const _someOtherStaticMember : SomeOtherObject;
static {
_someStaticMember = "foobar";
_someOtherStaticMember = new SomeOtherObject();
}
}