Java 如何避免翻译对象中的重复代码?
我有一个名为Transformer的超级类。我有两个派生类,它们将类A转换为类B,反之亦然。课程有: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,
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使用字节码生成-无需反射