Bellow是来自Google's UIBinder
tutorial的一些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返回类型,但返回名为Element
的{{1}}。如果它具有nameSpan
返回类型,那么这怎么可能?
答案 0 :(得分:1)
解释很简单,文档中的示例“有点”破碎。
无论如何,setElement()
和getElement()
的实现是不必要的,如果示例只是扩展UIObject
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”示例的独立变体(作为第一个UiBinder示例可能更容易理解):
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);
}
}