我正在阅读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
,所以它无法实例化,对吧?
答案 0 :(得分:3)
GWT.create
在编译时由GWT Java编译器专门处理。 GWT
课程是Google放置使GWT工作的低级“魔力”的地方。
答案 1 :(得分:0)
这是一个相当old answer(旧的SO术语;)),涵盖了相同的主题。
据我了解:它不会神奇地起作用,但是在知道如何为给定接口创建实例的生成器的帮助下(在您的示例中为某些MyUIBinderGenerator)。并且必须在某个gwt.xml文件中实现并发布该生成器。