如何判断类引用是否是接口?

发布于 2024-12-09 06:53:36 字数 148 浏览 0 评论 0原文

就像在 Java 中一样,我想知道我的引用是否被声明为 Interface。

function foo(classRef:Class){

if(classRef.isInterface(){
  //something
}

}

As in Java I want to know if my reference is declared as Interface.

function foo(classRef:Class){

if(classRef.isInterface(){
  //something
}

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

虫児飞 2024-12-16 06:53:36

您可以使用 AS3 Commons Reflect 获取此信息。然后你的函数看起来像这样:

function foo(classRef:Class)
{
    var type:Type = Type.forClass(classRef);

    if (type.isInterface)
    {
        //something
    }
}

You can use AS3 Commons Reflect to get this information. Your function would then look something like this:

function foo(classRef:Class)
{
    var type:Type = Type.forClass(classRef);

    if (type.isInterface)
    {
        //something
    }
}
玩世 2024-12-16 06:53:36

我自己的探索。如果类是接口,则在 节点中的描述 XML 中,它将永远不会包含 。所以,这是一个函数:

private function isInterface(type : *):Boolean {
        var description : XML = describeType(type);
        return (description.factory[0].descendants("constructor").length() == 0
                && description.factory[0].descendants("extendsClass").length() == 0);
}

测试:

trace(isInterface(IEventDispatcher));
trace(isInterface(Button));
trace(isInterface(int));
trace(isInterface(XML));
trace(isInterface(String));

输出:

[trace] true
[trace] false
[trace] false
[trace] false
[trace] false

My own exploring. If class is interface, than in description XML in <factory> node it will never contain <constructor> and <extendsClass>. So, this is a function:

private function isInterface(type : *):Boolean {
        var description : XML = describeType(type);
        return (description.factory[0].descendants("constructor").length() == 0
                && description.factory[0].descendants("extendsClass").length() == 0);
}

Test:

trace(isInterface(IEventDispatcher));
trace(isInterface(Button));
trace(isInterface(int));
trace(isInterface(XML));
trace(isInterface(String));

Output:

[trace] true
[trace] false
[trace] false
[trace] false
[trace] false
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文