使用@UiFactory构建小部件是否有任何优点(除了干净的代码之外),而不是在@UiField中声明它们,然后在initWidget()之后对代码进行添加/更改?
答案 0 :(得分:3)
@UiField
让UiBinder在createAndBindUi()
期间为您实例化字段。然后你可以修改它们。@UiField(provided=true)
,并在调用createAndBindUi()
之前自己实例化字段。 (这样,你可以使用你喜欢的任何构造函数,它也允许依赖注入。)显然,你仍然可以在createAndBindUi()
之后修改它们。那么@UiFactory
有什么意义呢?好吧,我有时会使用它,当我在同一个ui.xml文件中有许多类似的元素时。所以e。 G。我有一个页面显示数字0-9的键盘。我没有使用10个@UiFields,而是使用构建小部件的@UiFactory,并将它们放在java.util.Map中(并执行一些常见的设置)。
答案 1 :(得分:2)
您的UiBinder文件可能存在无法使用简单构造函数构建的参数(例如,CssResource用于在多个UiBinder文件之间共享样式)。 使用@UiFactory,您可以将这些资源注入UiBinder文件。