GWT UIBinder方法返回类型void



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返回类型,但返回一个名为nameSpanElement。考虑到它具有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);
  }
}

最新更新