gpt4 book ai didi

java - 以特定方式处理通用实现列表

转载 作者:行者123 更新时间:2023-12-01 12:25:03 25 4
gpt4 key购买 nike

假设我有一个像这样的标记界面:

public interface Widget { };

以及该接口(interface)的各种实现:

public class AWidget implements Widget {
....
public String getSomeAttribute() { return ...; }
}

public class AnotherWidget implements Widget {
....
public String getAnotherAttribute() { return ...; }
}

进一步假设我有一些代码创建一个 List 并尝试处理它们:

List<? extends Widget> widgets = someMethodToCreateWidgets();

在一个类中我循环并处理小部件是否可能类似于以下内容

for(Widget widget : widgets) {
anotherClass.process(widget);
}

anotherClass具有如下所示的方法签名?

public class AnotherClass {
public void process(AWidget widget) {
....
widget.getSomeAttribute();
....
}

public void process(AnotherWidget widget) {
....
widget.getAnotherAttribute();
....
}
}

我觉得我之前在概念上见过类似的实现,但我正在努力让类似的东西发挥作用。最终,我试图避免一个必须有一堆

process() 方法
if ( widget instanceof AWidget ) {
...
}
else if ( widget instanceof AnotherWidget ) {
...
}

最佳答案

如果我理解正确的话,你正在寻找一种叫做“双重调度”的东西。访问者模式是处理此问题的一种常见方法:http://en.wikipedia.org/wiki/Visitor_pattern

关于java - 以特定方式处理通用实现列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26432486/

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