i've realized little framework convert generic entity of type a 1 of type b.
so created interface:
public interface iconvert<a,b> { public b convert (a entity); public list<b> convertlist(list<a> entitylist); } and abstract class generalize convertlist method:
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>(); (a : entitylist) { bs.add(convert(a)); } return bs; } } suppose have map bclass instance aclass instance:
public class aclassconverter extends abstractconverter<bclass, aclass>{ @override public aclass convert(bclass entity) { return new aclass(); //bclass aclass mapping } } i can define new class aclassconverter, extending abstract 1 , implement specific convert method. convertlist method free.
what i'm trying understand how generalize m 1 type converter without have reimplement convertlist method entity:
public class aclassconverter extends abstractconverter<bclass, aclass> { @override public aclass convert(bclass entity) { return new aclass(); //bclass aclass mapping } public aclass convert(cclass entity) { return new aclass(); //cclass aclass mapping } public list<aclass> convert(list<cclass> entitylist) { //foreach > call convert(c); //return aclasslist; } } consider aclass, bclass, , cclass don't extend common class (apart object). , aclass, bclass, , cclass don't have cross reference (aclass unaware of bclass can't define in bclass converttoaclass...).
i'd need as:
public class aclassconverter extends abstractconverter<bclass, aclass> , abstractconverter<cclass, aclass> !!!
regards, , sorry confusion.
due lack of multiple inheritance in java cannot done quite easily.
however, @ cost of less elegant solution, refactor code pulling convertlist method static helper class.
maybe so:
public final class converterhelper { private converterhelper() {} public static <a,b> list<b> convertlist(iconvert<a,b> converter, list<a> list) { list<b> bs=new arraylist<b>(); (a : list) { bs.add(converter.convert(a)); } return bs; } } you have use static helper method if wanted convert lists.
Comments
Post a Comment