type のジェネリック Entity をA
Type の 1 つに変換する小さなフレームワークを実現しました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
、特定の convert メソッドを実装するだけです。convertList
方法は自由です。
私が理解しようとしているのはconvertList
、エンティティのメソッドを常に再実装する必要なく、m から 1 型へのコンバーターを一般化する方法です。
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
、およびCClass
相互参照がありません (AClass
は認識していないため、何かでBClass
定義することはできません... )。BClass
convertToAClass
次のようなものが必要です:
public class AClassConverter extends AbstractConverter<BClass, AClass> , AbstractConverter<CClass, AClass>
!!!
ご迷惑をおかけして申し訳ありません。