gpt4 book ai didi

java - UiBinder:我可以重写工厂方法吗?

转载 作者:太空宇宙 更新时间:2023-11-04 08:09:37 27 4
gpt4 key购买 nike

在提出问题之前,我将简要描述一下背景。我有一个 Widget 类,它将 ui 实现“外包”到一个单独的类(如下所示):

public class SimpleFilmWidget extends Composite implements FilmActivityControl {

public static interface Ui {

Panel getMainPanel();

VoteWidget getVotePanel();

InlineLabel getHaveNotSeenLabel();

//...
}

实际的小部件类可以使用 Ui 类实例获取对特定子字段小部件/元素的引用:

    Ui ui;

public SimpleFilmWidget() {
this(new DefaultUi());
}

public SimpleFilmWidget(Ui customUi) {

assert customUi != null : "UI should not be null!!!";

ui = customUi;

initWidget(ui.getMainPanel());
}

我通过 UiBinder 提供了实际的 UI 实现,它使用 UiFactory 创建另一个复杂的子小部件

class DefaultUi implements Ui {

//...

@UiFactory
protected VoteWidget createVoteWidget(){

return new VoteWidget(msg){

@Override
protected SetVoteEvent onSetVote(Star star, boolean fireEvents) {
return clientWidget.onSetVote(super.onSetVote(star, fireEvents));
}
};
}

问题是:当我提供 DefaultUi 的子类时,可以在子类中重写 UiFactory 方法而不混淆 UiBinder 解析器吗?

编辑:

UiFactory 方法不应被重写,因为 uibinder 会看到这两种方法(重写和重写),并与同一类型的两个 uifactories 混淆:[ERROR] Duplicate factory in class SimpleFilmWidget.DefaultUi for type VoteWidget

最佳答案

我认为没有理由不可能:UiBinder 查看公开的 API,并调用传递给 createAndBindUi 的实际实例上的方法,这只是标准多态性。

关于java - UiBinder:我可以重写工厂方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11456883/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com