Java中特定于子类的重写

Jon*_*ny5 2 java polymorphism inheritance frameworks overloading

我的问题如下:

我们有一个内部工作的算法

  • 具有"String getContent()"方法的表达式对象
  • 使用"表达式操作(表达式e)"方法操作表达式的操纵器对象

这将成为Java中的框架.要解决一个真正的问题,需要给出一个Expression和一个Manipulator的特定实现,而Algorithm类将完成剩下的工作.

假设我们需要针对特定​​问题的ProblemExpression和ProblemManipulator.

ProblemExpression可能包含许多新字段,可由ProblemManipulator使用.

现在,我只能想到两种编写干净代码的方法:

  • 让ProblemManipulator.manipulate假设它的参数是ProblemExpressions
  • 使用instanceOf

但我觉得这不是我应该怎么做的.还有其他建议吗?

关心并提前感谢您,

Xaero.

Pet*_*rey 5

听起来你应该使用Generic.喜欢

interface Manipulator<E extends Expression> {
    public void manipulate(E expression);
}

class ProblemManipulator implements Manipulator<ProblemExpression> {
    public void manipulate(ProblemExpression expression) {
        // expression is a ProblemExpression
    }
}
Run Code Online (Sandbox Code Playgroud)