Java 如何避免翻译对象中的重复代码?

Java 如何避免翻译对象中的重复代码?,java,inheritance,interface,superclass,Java,Inheritance,Interface,Superclass,我有一个名为Transformer的超级类。我有两个派生类,它们将类A转换为类B,反之亦然。课程有: class A{ private Long id; private String name; ... getter and setters } class B{ private Long id; private String name; ... getter and setters } interface Transformer<S,

我有一个名为Transformer的超级类。我有两个派生类,它们将类A转换为类B,反之亦然。课程有:

class A{
    private Long id;
    private String name;

    ... getter and setters
}

class B{
    private Long id;
    private String name;

    ... getter and setters
}

interface Transformer<S,D> {
    D convert(S source);
}

class ATransformer implements Transformer<A,B>{
    public B convert(A a){
        B b=new B();
        b.setId(a.getId());
        .....
        return b;
    }
}

class BTransformer implements Transformer<B,A>{
    public A convert(B b){
        A a=new A();
        a.setId(b.getId());
        .....
        return a;
    }
}
A类{
私人长id;
私有字符串名称;
…能手和二传手
}
B类{
私人长id;
私有字符串名称;
…能手和二传手
}
接口变压器{
D转换(S源);
}
类ATransformer实现变压器{
公共B转换(A){
B=新的B();
b、 setId(a.getId());
.....
返回b;
}
}
B类变压器{
公共A转换(B){
A=新的A();
a、 setId(b.getId());
.....
返回a;
}
}

如您所见,派生的transformer类具有重复的代码。是否有任何设计或解决方案可以避免这种重复而不使用反射?

创建C类并从C扩展A和B类
但是,转换是无效的,因为您使用cast:)

您可以使用类似或的bean映射器框架来为您完成这项工作(并避免重复代码)。
然而,正如其他评论中已经提到的,它是(在大多数情况下)最好避免使用几乎相同的类,而不使用相同的类Hirachy,因此是可浇铸的。

似乎您不需要多个类。除了类名之外,A和B之间的区别是什么?@cricket\u 007例如,A是我的实体,B是我的dtoNo,orika使用字节码生成-无需反射