gpt4 book ai didi

actionscript-3 - AS3 - 我可以知道一个类是否实现了一个接口(interface)(或者是另一个类的子类)吗?

转载 作者:行者123 更新时间:2023-12-04 04:14:09 27 4
gpt4 key购买 nike

使用此代码

function someFunction(classParam:Class):Boolean
{
// how to know if classParam implements some interface?
}

即比较 classParamIEventDispatcher界面:
someFunction(EventDispatcher) // returns true
someFunction(Object) // returns false

我知道 is 做不到运算符(operator)。但是,有没有办法做到这一点?有没有办法知道一个类是否实现了某个接口(interface)? (或者是另一个类的子类?)

可能的解决方案:

A. 创建 classParam 的对象并使用该对象进行比较,使用 is运算符(operator)。
function someFunction(classParam:Class):Boolean
{
return (new classParam()) is IEventDispatcher
}

B. 使用 describeType()
function someFunction(classParam:Class):Boolean
{
var xml:XML = describeType(classParam)
// found "implementsInterface" value in xml and compare to IEventDispatcher
}

有一种方法不使用 describeType或创建 new运算符(operator)?

最佳答案

除了使用 describeType 之外,我没有看到任何方法可以实现您想要做的事情。 .
它是为此目的而创建的,您为什么不想使用它呢?

编辑:
它实际上只需要 2 行来做到这一点:

var classDescription:XML = describeType(classParam);
return (classDescription.factory.implementsInterface.(@type == getQualifiedClassName(IEventDispatcher)).length() != 0);

...或者只是其中之一,如果这让您感到困扰:
return (describeType(classParam).factory.implementsInterface.(@type == getQualifiedClassName(IEventDispatcher)).length() != 0);

关于actionscript-3 - AS3 - 我可以知道一个类是否实现了一个接口(interface)(或者是另一个类的子类)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2518180/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com