首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JSNI中实例化java类

如何在JSNI中实例化java类
EN

Stack Overflow用户
提问于 2012-03-06 21:51:55
回答 1查看 960关注 0票数 0

我试图使用JSO的package-private的::new()方法在JSNI方法体中实例化一个java类型,但所有实例都作为空句柄返回。怎么会这样?

是否可以使用类似于Java的语法来实例化该类?

相关代码如下:

代码语言:javascript
复制
public class OnChangeHandlerJso extends JavaScriptObject {

    protected OnChangeHandlerJso() {};

    public static native JavaScriptObject create() /*-{

        return function(cm, changeInfo) {

            var eventBus = @com.gigaspaces.codemirror_gwt.client.events.EventUtils::CODE_MIRROR_EVENT_BUS;

            var event = @com.gigaspaces.codemirror_gwt.client.events.EditorContentChangeEvent::new()();

            // could something like this work?
            // var event = new @com.gigaspaces.codemirror_gwt.client.events.EditorContentChangeEvent;

            event.@com.gigaspaces.codemirror_gwt.client.events.EditorContentChangeEvent::setCm(Lcom/gigaspaces/codemirror_gwt/client/jsni/CodeMirrorJso;)(cm);
            event.@com.gigaspaces.codemirror_gwt.client.events.EditorContentChangeEvent::setChangeInfo(Lcom/gigaspaces/codemirror_gwt/client/jsni/ChangeInfoJso;)(changeInfo);
            eventBus.@com.google.gwt.event.shared.EventBus::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event);
        };
    }-*/;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-09 00:29:52

解决方法如下:

覆盖类型

代码语言:javascript
复制
public class OnChangeHandlerJso extends JavaScriptObject {

    protected OnChangeHandlerJso() {};

    public static native OnChangeHandlerJso create() /*-{
        return function(cm, changeInfo) {
            @com.gigaspaces.codemirror_gwt.client.vo.OnChangeHandler::handle(Lcom/gigaspaces/codemirror_gwt/client/jsni/CodeMirrorJso;Lcom/gigaspaces/codemirror_gwt/client/jsni/ChangeInfoJso;)(cm, changeInfo);
        };
    }-*/;
}

操作者

代码语言:javascript
复制
public class OnChangeHandler implements JsoWrapper<OnChangeHandlerJso> {

    public static void handle(CodeMirrorJso cmJso, ChangeInfoJso changeInfoJso) {
        // ...
        EventUtils.CODE_MIRROR_EVENT_BUS.fireEvent(new EditorContentChangeEvent(cm, changeInfo));
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9584991

复制
相关文章

相似问题

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