Actionscript 3 AS3:将变量强制转换为动态类型
如果变量类型是Actionscript 3 AS3:将变量强制转换为动态类型,actionscript-3,flex4,Actionscript 3,Flex4,如果变量类型是类类型的变量,是否可以将变量动态转换为类型 考虑以下情况(无效): 上下文:我正在使用Flex(4)创建一个模态管理器,它将控制创建模态的各个方面(通过PopUpManager),并且我希望尽可能将其最小化。组件将通过相同的函数传递,而不允许强制转换任何类型的变量,例如: var myInstance:* = new myClass(); 我宁愿让它尽可能明确。假设AFAIK这样做没有实际的好处,因为在赋值之前会进行检查以确保参数的类型为Class,这更像是一个POC 欢迎有任何
类
类型的变量,是否可以将变量动态转换为类型
考虑以下情况(无效):
上下文:我正在使用Flex(4)创建一个模态管理器,它将控制创建模态的各个方面(通过PopUpManager
),并且我希望尽可能将其最小化。组件将通过相同的函数传递,而不允许强制转换任何类型的变量,例如:
var myInstance:* = new myClass();
我宁愿让它尽可能明确。假设AFAIK这样做没有实际的好处,因为在赋值之前会进行检查以确保参数的类型为Class
,这更像是一个POC
欢迎有任何想法
编辑:我想我可以做到以下几点:
var myClass:Class = MyClass;
var myInstance:* = new myClass() as myClass;
public interface WindowChild {...}
但我不确定这是否是最好的方法。我认为编译器无法处理动态类型。如果可以,就有可能实现类似于泛型的特性 我认为你能做的最好的事情是:
var myClass:Class = MyClass;
var myObject:* = new myClass();
我不这么认为。当我希望传入多个类型时,我会执行以下操作:
public function doSomethingWithThis(something:Object):void {
var button:Button = something as Button;
var image:Image = something as Image;
var list:List = something as List;
if (button) {
}
else if (image) {
}
else if (list) {
}
else {
throw new Error("This type of object will not work with this method.");
}
}
我不知道这是否与你的问题相同。我需要有一个类,它有一个实现接口的子类。实现类可以是任何类型,但我需要保存并加载它的所有信息 假设我对以下内容有一个简单的了解:
var myClass:Class = MyClass;
var myInstance:* = new myClass() as myClass;
public interface WindowChild {...}
及
当要保存窗口时,我将所有内容都保存在一个XML blob中。我在Flash播放器中找到一个函数:flash.utils.getQualifiedClassName(值:*):字符串
文档中说:“返回对象的完全限定类名。”这意味着它返回的字符串类似于your.packages::ClassName
。当窗口
类调用getQualifiedClassName(child)
时,它会得到类似于my.packages.structure::MyImplementation的内容
请注意,这不是接口WindowChild
的路径,而是我创建的实现该接口的类
当再次加载所有这些信息时,我使用了另一个Flash函数getQualifiedClassName(child)
。这个函数“返回对name参数指定的类的类对象的引用”。我认为这只是一种花哨的说法,它返回一个对象
,但它的类型将是类
当时我需要做的就是:
var childClass:Class = getDefinitionByName(childClassName) as Class; //Child class name is what was returned from getQualifiedClassName(child)
child = new childClass(); // This creates a new Object of what ever type childClass is
这种方法将在运行时保留类型检查,但您始终可以添加另一个中间步骤,以确保从new childClass()
返回的内容是您想要的
希望这是有用的
干杯啊,这很方便。。。这可能确实有用。这不完全是我的问题,但最终可能会找到一个地方。非常感谢。