父类和子类之间的多态性

时间:2016-04-11 07:26:23

标签: java spring polymorphism visitor

我正在使用访问者模式进行开发,如下所示:

public abstract class AbstractVisitor {
    public void visit(AbstractConfig config) {
        throw new NotImplementedException();
    }
}

继承
@Component
public class ConcreteVisitor extends AbstractVisitor {
    public void visit(ConfigA config) {
        // Do something
    }
    public void visit(ConfigB config) {
        // Do something
    }
}

当然ConfigAConfigB延伸AbstractConfig

我使用ConcreteVisitor的bean实例通过自动装配它:

@Autowired
private AbstractVisitor visitor;

问题是,当我调用visitor.visit(config)时,configConfigA的实例,它会引发NotImplementedException。

现在我将所有可能的抽象方法都声明为AbstractVisitor,但还有另一个更好的解决方案吗?我的意思是,具体的访问者可以定义任何多态到父抽象方法的参数的方法。

提前谢谢。

0 个答案:

没有答案