我正在实现一个带有Java堆栈目标的线性规划器。出于这个原因,我正在使用Stack,我需要在其中存储不同的对象:谓词,运算符,状态。为此,我创建了一个名为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接口这个术语相遇,我认为这是我的Stackable的情况。我还发现它们一般可以被注释替换,但我从未使用它们,我不知道它们是否可以解决我的问题。
这就是我想知道的原因: