在JAVA中实例化接口?

时间:2010-09-30 10:19:26

标签: java gwt interface instantiation

我正在阅读GWT的UIBinder上的文档,第一个代码片段让我感到困惑:

public class HelloWorld extends UIObject { // Could extend Widget instead
  interface MyUiBinder extends UiBinder<DivElement, HelloWorld> {}
  private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);

  @UiField SpanElement nameSpan;

  public HelloWorld() {
    // createAndBindUi initializes this.nameSpan
    setElement(uiBinder.createAndBindUi(this));
  }
}

在第二行,在本地创建一个扩展UiBinder接口的接口。但是,在第三行上,使用GWT.create()创建此接口的实例。

这怎么可能?没有一个类实现MyUiBinder,所以它无法实例化,对吧?

2 个答案:

答案 0 :(得分:3)

GWT.create在编译时由GWT Java编译器专门处理。 GWT课程是Google放置使GWT工作的低级“魔力”的地方。

More details under this question.

答案 1 :(得分:0)

这是一个相当old answer(旧的SO术语;)),涵盖了相同的主题。

据我了解:它不会神奇地起作用,但是在知道如何为给定接口创建实例的生成器的帮助下(在您的示例中为某些MyUIBinderGenerator)。并且必须在某个gwt.xml文件中实现并发布该生成器。