【问题标题】:Why can't I define interface for overlay type lightweight collections?为什么我不能为覆盖类型轻量级集合定义接口?
【发布时间】:2012-06-27 11:29:16
【问题描述】:

想为轻量级集合定义一个接口为blow,但是编译不成功。这里有什么错误吗?

//...........................Interface...........................................

@SingleJsoImpl(JsArrayExtImpl.class)
public interface JsArrayExt<M>{

        public  void add(int addBefore, M model) ;

        public  void add(M model) ;

        public  void addAll(JsArrayExt<M> models);
}


//................................Implementation

public class JsArrayExtImpl<M extends JavaScriptObject> extends JsArray<M> implements    JsArrayExt<M>
{
  protected JsArrayExtImpl()
  {
  }

  @Override
  public final native void add(int addBefore, M model) /*-{
    this.splice(addBefore, 0, model);
  }-*/;

  @Override
  public final void add(M model)
  {
    ...
  }
}

错误:

Exception in thread "Code server for gwttest from Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0.1 on ...GWTTest.html?gwt.codesvr=127.0.0.1:9997 @ SR;E74|oFVbz;?F%" java.lang.NullPointerException
at com.google.gwt.dev.shell.ModuleSpace.dispose(ModuleSpace.java:146)
at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:215)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:525)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
at java.lang.Thread.run(Thread.java:722)`

【问题讨论】:

  • 能否添加编译器错误?
  • 是的,添加了,没有那么多有用的信息

标签: gwt interface overlay


【解决方案1】:

这是因为 JsArray 有一个受保护的构造函数。见:Protected constructor and accessibility

你不能继承它。您需要将代码复制到您自己的类中。

【讨论】:

  • JsArray 可以被子类化,我在我的代码库中做了,并且可以工作。
  • 别以为是这样,这条规则是用于“new Superclass()”而不是“super()”。
猜你喜欢
  • 2016-12-02
  • 2020-11-14
  • 2023-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-13
  • 1970-01-01
  • 2012-07-03
相关资源
最近更新 更多