3

我正在用 Java 实现一个带有一堆目标的线性规划器。出于这个原因,我使用了一个堆栈,我需要在其中存储不同的对象:谓词、运算符、状态。为此,我创建了一个名为 Stackable 的接口,因此我有一个Stack<Stackable>. 这个接口是空的,因为所有可堆叠的对象都没有任何共同点,除了它们都必须堆叠。

public Interface Stackable {

}

public class Predicate implements Stackable {
    private String name;
    private List<Parameter> params;
    ...
}

public class Operator implements Stackable {
    private String name;
    private List<Parameter> params;

    private List<Predicate> preconditions;
    private List<Predicate> adds;
    private List<Predicate> deletes;
    ...
}

public class State implements Stackable {
    private List<Predicate> preds;
    ...
}

由于我不喜欢空界面的想法,因此我开始阅读并遇到了Marker interface一词,我认为这是我的 Stackable 的情况。我也发现一般都可以用注解代替,但是我没用过,不知道能不能解决我的问题。

这就是为什么我想知道:

  1. 我的设计是否有更好的替代方案(通过使用注释或其他方式)?
  2. 如果在某些情况下标记接口仍然是一种解决方案,我如何区分何时应该使用它们?
4

0 回答 0