Bellow是Google UIBinder
教程中的一些Java代码。该代码与一个单独的HTML页面一起显示文本"Hello,World"。
public class HelloWorld {
interface MyUiBinder extends UiBinder<DivElement, HelloWorld> {}
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
@UiField SpanElement nameSpan;
public HelloWorld() {
setElement(uiBinder.createAndBindUi(this));
}
public void setName(String name) {
nameSpan.setInnerText(name);
}
/**
* Method in question
*/
public void Element getElement() {
return nameSpan;
}
}
getElement()方法有一个void返回类型,但返回一个名为nameSpan
的Element
。考虑到它具有void
返回类型,这怎么可能呢?
解释很简单,文档中的示例"有点"坏了。
如果示例简单地扩展了类似的UIObject,那么setElement()
和getElement()
的实现无论如何都是不必要的
public class HelloWorld extends UIObject {
private static HelloWorldUiBinder uiBinder =
GWT.create(HelloWorldUiBinder.class);
interface HelloWorldUiBinder extends UiBinder<Element, HelloWorld> {
}
@UiField
SpanElement nameSpan;
public HelloWorld() {
setElement(uiBinder.createAndBindUi(this));
}
public void setName(String name) {
nameSpan.setInnerText(name);
}
}
顺便说一句,这里是UiBinder"hello-world"示例的独立变体(作为第一个UyBinder示例可能更容易理解):
public class HelloWorld implements EntryPoint {
interface HelloWorldUiBinder extends UiBinder<Element, HelloWorld> {
}
@UiField SpanElement nameSpan;
public void onModuleLoad() {
final HelloWorldUiBinder uiBinder = GWT.create(HelloWorldUiBinder.class);
final Element element = uiBinder.createAndBindUi(this);
nameSpan.setInnerText("world");
Document.get().getBody().appendChild(element);
}
}