我已经实现了一个小框架,可以将类型的通用实体转换为类型A
之一B
。
所以我创建了一个界面:
public interface IConvert<A,B> {
public B convert (A entity);
public List<B> convertList(List<A> entitylist);
}
和一个抽象类来概括该convertList
方法:
public abstract class AbstractConverter<A,B> implements IConvert<A, B> {
@Override
public abstract B convert(A entity) ;
@Override
public List<B> convertList(List<A> entitylist) {
List<B> bs=new ArrayList<B>();
for (A a : entitylist) {
bs.add(convert(a));
}
return bs;
}
}
假设我们必须将一个BClass
实例映射到一个AClass
实例:
public class AClassConverter extends AbstractConverter<BClass, AClass>{
@Override
public AClass convert(BClass entity) {
return new AClass(); //BClass to AClass mapping
}
}
我可以简单地定义一个新类AClassConverter
,扩展抽象类并实现特定的转换方法。该convertList
方法是免费的。
我想了解的是如何将 m 概括为一种类型的转换器,而不必总是重新实现convertList
实体的方法:
public class AClassConverter extends AbstractConverter<BClass, AClass> {
@Override
public AClass convert(BClass entity) {
return new AClass(); //BClass to AClass mapping
}
public AClass convert(CClass entity) {
return new AClass(); //CClass to AClass mapping
}
public List<AClass> convert(List<CClass> entityList) {
//foreach > call convert(c);
//return aClassList;
}
}
考虑AClass
, BClass
,并且CClass
不要扩展任何公共类(除了Object
)。并且AClass
, BClass
, andCClass
没有交叉引用(AClass
不知道,BClass
所以我不能在BClass
某些东西中定义为convertToAClass
...)。
我需要一些东西:
public class AClassConverter extends AbstractConverter<BClass, AClass> , AbstractConverter<CClass, AClass>
!!!
问候,并为混乱感到抱歉。