Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以通用方式转换2个具有不同名称空间的确切POJO_Java - Fatal编程技术网

Java 以通用方式转换2个具有不同名称空间的确切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

我有一个Java类,它完全相同,但在两个不同的名称空间下,不能修改。我需要将这两个类转换为我的内部pojo表示。是否有一种方法可以在不复制相同代码的情况下以通用方式执行

例如:

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);