Java 以通用方式转换2个具有不同名称空间的确切POJO
我有一个Java类,它完全相同,但在两个不同的名称空间下,不能修改。我需要将这两个类转换为我的内部pojo表示。是否有一种方法可以在不复制相同代码的情况下以通用方式执行 例如:Java 以通用方式转换2个具有不同名称空间的确切POJO,java,Java,我有一个Java类,它完全相同,但在两个不同的名称空间下,不能修改。我需要将这两个类转换为我的内部pojo表示。是否有一种方法可以在不复制相同代码的情况下以通用方式执行 例如: com.namespace.first; public ClassA { private String a; private String b; } & 现在我有一个Pojo,它需要由来自ClassA的值来填充: com.namespace.third public ClassC { priv
com.namespace.first;
public ClassA {
private String a;
private String b;
}
&
现在我有一个Pojo,它需要由来自ClassA
的值来填充:
com.namespace.third
public ClassC {
private String a;
private String b;
private String d;
private String e;
}
一种选择是:
public ClassC convert(com.namespace.first.ClassA classA) {
return new ClassC(classA.getA(), classA.getB(), "c", "d");
}
public ClassC convert(com.namespace.second.ClassA classA) {
return new ClassC(classA.getA(), classA.getB(), "c", "d");
}
我是否可以使用不同的路线来代替两个转换方法,这两个方法的作用完全相同(虽然这个示例很简单,但在我的例子中它要大得多)?可能类似于:
public <T> ClassC convert(T classA) {
return new ClassC(classA.getA(), classA.getB(), "c", "d");
}
公共类C转换(T类A){
返回新的ClassC(classA.getA(),classA.getB(),“c”,“d”);
}
如果您可以使用库,那么Apache BeanUtils具有copyProperties方法
public static void copyProperties(Object dest, Object orig);
将属性值从源bean复制到目标bean,以便
属性名称相同的所有情况
是的,一开始我确实想到了这一点,但问题是如果我们不指定t的类型,编译器就不知道t有a和b@user1692342当然,当您调用convert时,编译器会检查您正在传递的对象的类是否包含一个方法
getA()
和getB()
。。。尝试使用此代码并编译
public static void copyProperties(Object dest, Object orig);