我有几个用于创建对象的类。这些对象每个都有必须运行的代码,具体取决于插入的顺序。
它们需要按顺序存储-并按存储顺序调用。
我不确定在Java中处理此问题的正确方法是否是通用列表并在运行时检查类型。
List<Object> list = new ArrayList<Object>();
我还考虑过将每个对象类型存储在其自己的类型列表中,并以正确的顺序从列表中读取父对象。但是,这似乎比仅在运行时处理检查对象类型更为复杂。
处理此问题的正确“ Java”方法是什么?
如果这些对象不具有共同的祖先:
这些类无关。他们没有共同的祖先。
然后您可以做的是创建另一个类作为包装器:
T
对象用作对需要调用的代码的引用。例如:
Consumer<T>
然后创建另一个管理 class Invocable<T> {
private final T target;
private final Consumer<T> invocation;
public Invocable(T target, Consumer<T> invocation) {
this.target = target;
this.invocation = invocation;
}
public void runInvocation() {
invocation.accept(target);
}
}
的类,如下所示:
List<Invocable>
就是这样!只需使用class RunnableList {
private List<Invocable<?>> invocables = new ArrayList<Invocable<?>>();
public <T> void add(T target, Consumer<T> invocation) {
invocables.add(new Invocable<T>(target, invocation));
}
public void run() {
invocables.forEach(Invocable::runInvocation);
}
}
方法将任何对象添加到RunnableList
,完成添加所有对象(参考要调用的相应代码)后,只需在add(T target, Consumer<T> invocation)
上调用run
即可。
下面是一个完整的工作示例,请尝试一下以了解它:
RunnableList
希望这会有所帮助。