我想使用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)。
该如何解决而不必在每个实体类中都实现该方法?