gpt4 book ai didi

java泛型类型结论

转载 作者:行者123 更新时间:2023-11-30 07:49:55 25 4
gpt4 key购买 nike

查看类结构。我有模型和 View ;

abstract class Model {
}

abstract class View <M extends Model> {
public M model;
View(M model) {
this.model = model;
}
}

class ButtonModel extends Model {
public String text;
}
class ButtonView extends View<ButtonModel> {
public Runnable onClickRunnable;
ButtonView(ButtonModel model) {
super(model);
}

}

我想编写类型安全的 View 结构。

 public static <T extends Model> View<? extends T> build (T model) {
if (model instanceof ButtonModel)
return new ButtonView((ButtonModel)model);
else if(...)
}

为什么我需要将新的 ButtonView 转换为 View ?怎样才能写得更干净呢?

最佳答案

我认为你把事情过于复杂化了。您在这里实际上并不需要泛型,只需使用良好的旧方法重载即可:

public static ButtonView build (ButtonModel model) {
return new ButtonView(model);
}

public static SomeOtherView build (SomeOtherModel model) {
return new SomeOtherView(model);
}

// etc

为每种模型类型编写重载方法与为每种模型类型编写包含 instanceof 的单个方法没有什么不同。

关于java泛型类型结论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33435030/

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