如何在超类的访客模式中放置调度?

时间:2019-04-18 13:01:48

标签: java visitor-pattern double-dispatch

我想使用DoubeDispatch将我的数百个实体类的某些显示字符串的字符串转发到实用程序类。

我不想在每个单个实体类中实现 String createStringRepresentation(StringRepresentationBuilder builder),所以我尝试使用泛型:

public abstract class AbstractEntity<T extends AbstractEntity>  {
    public String createStringRepresentation(StringRepresentationBuilder builder) {
        return builder.createStringRepresentation((T)this);
    }
}

public class SomeEntity extends AbstractEntity<SomeEntity> { }

public class StringRepresentationBuilder {
    public String createStringRepresentation(Object obj) {
        ...
    }
    public String createStringRepresentation(SomeEntity entity) {
        ...
    }
}

不幸的是,这不起作用。强制转换将被忽略,并且 SomeEntity 调用 createStringRepresentation(Object obj)

该如何解决而不必在每个实体类中都实现该方法?

0 个答案:

没有答案