首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >父对象和子对象之间的空值转换

父对象和子对象之间的空值转换
EN

Stack Overflow用户
提问于 2011-03-02 04:17:44
回答 2查看 491关注 0票数 1

我有一个带有两个对象的flex应用程序:父小部件(称为IBaseWidget)和子小部件(称为HelperWidget2)。当用户单击帮助链接时,助手小部件被加载到基本小部件列表中,然后显示给用户。

但是,当我试图通过将集合中的基本小部件转换为子小部件类型来访问此子小部件时,子小部件返回null,并且我无法使用该小部件。

下面的代码片段正确地返回了新添加的小部件的小部件ID,并调度一个事件来加载小部件:

代码语言:javascript
复制
var id:Number = WidgetManager.getInstance().getWidgetId("Helper");
ViewerContainer.dispatchEvent(new AppEvent(AppEvent.WIDGET_RUN, id, openQuickQueryCanvas));

加载小部件后,名为openQuickQueryCanvas()的回调函数将尝试对辅助小部件执行另一个操作:

代码语言:javascript
复制
private function openQuickQueryCanvas():void{
            var id:Number = WidgetManager.getInstance().getWidgetId("Helper");
            var bWidget:IBaseWidget = WidgetManager.getInstance().getWidget(id) as IBaseWidget;
            var helperWidget:HelperWidget2 = bWidget as HelperWidget2;
            if(helperWidget != null){
                helperWidget.quickQueryCanvas.dispatchEvent(new MouseEvent(MouseEvent.CLICK));//fire an event to open the quick query canvas
            }

        }

问题是上面的helperWidget总是返回null,这意味着转换不成功。这对我来说没有任何意义,因为bWidget的类型是HelperWidget2。

有什么想法吗?我被难住了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-02 06:04:19

首先,确保HelperWidget2像这样实现IBaseWidget

代码语言:javascript
复制
public class HelperWidget2 implements IBaseWidget

其次,我建议使用is关键字,而不是强制转换和检查null:

代码语言:javascript
复制
private function openQuickQueryCanvas():void {
                var id:Number = WidgetManager.getInstance().getWidgetId("Helper");
                var bWidget:IBaseWidget = WidgetManager.getInstance().getWidget(id) as IBaseWidget;

                if(bWidget is HelperWidget2)
                {
                  HelperWidget2(bWidget).doWhatever();
                }

            }
票数 2
EN

Stack Overflow用户

发布于 2012-10-03 04:49:21

将返回的实例强制转换为对象,而不是HelperWidget2。您在设计时不会拥有这些方法的智能感知,但更重要的是,它在运行时不会为空。

代码语言:javascript
复制
var bWidget:Object = WidgetManager.getInstance().getWidget(id);
bWidget.doWhatever();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5159830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档