Java 如何分配列表<;com.company.mod1.someClass>;要列出的v1<;com.company.mod2.someClass>;v2?

Java 如何分配列表<;com.company.mod1.someClass>;要列出的v1<;com.company.mod2.someClass>;v2?,java,Java,对于2个java包,它们具有完全相同的结构/定义类 现在给出列表v1,如何分配/复制到列表v2 谢谢 List clazzV2=bullejudges.stream().map(this::convertToV2.collect(Collectors.toList()) List<com.company.mod2.someClass> clazzV2 = blameJudges.stream().map(this::convertToV2).collect(Collectors.to

对于2个java包,它们具有完全相同的结构/定义类

现在给出列表v1,如何分配/复制到列表v2

谢谢

List clazzV2=bullejudges.stream().map(this::convertToV2.collect(Collectors.toList())
List<com.company.mod2.someClass> clazzV2 = blameJudges.stream().map(this::convertToV2).collect(Collectors.toList())

////////convert

private com.company.mod2.someClass convertToV2(com.company.mod1.someClass v1) {
   com.company.mod2.someClass v2 = new com.company.mod2.someClass();
   BeanUtils.copyProperties(v1, v2);
   return v2;
}

////////皈依 私有com.company.mod2.someClass convertToV2(com.company.mod1.someClass v1){ com.company.mod2.someClass v2=新建com.company.mod2.someClass(); BeanUtils.copyProperties(v1、v2); 返回v2; }
当您有两个看起来相同但实际上并不相同的类时,它们在Java中仍然被认为是不同的

考虑以下两个例子:

public A {
  private int id;
  public int getId() { return this.id; }
  public void setId(int id) { this.id = id; }
}

public B {
  private int id;
  public int getId() { return this.id; }
  public void setId(int id) { this.id = id; }
}
虽然它们是“相同”的,因为它们都有相同的方法和变量,但从Java编译器的角度来看,它们并不“相同”。不能将A的实例分配给使用类型B声明的变量

同样,如果你有一个a的列表,你不能在不转换的情况下将该列表分配给B的列表,因为a和B实际上不是同一个类

所以,假设您有一个
列表var1
和一个
列表var2
,并且您想要将var1中的所有a项添加到var2,您首先需要将它们从类型a转换为类型B。您需要一个方法来进行转换。(是否使用来自第三方库(如Apache Commons’BeanUtils)的类取决于您的项目使用的内容以及您对相对较大的第三方实用程序依赖性的感受。下面我提供的示例是有意简化的,并适用于我上面声明的“a”和“B”类。)

下面是如何通过转换步骤从一个列表复制或分配到另一个列表

// Function that converts from A to B
public B convert(A a) {
  B b = new B();
  b.setId(a.getId());
  return b;
}


List<A> var1 = ...;
List<B> var2 = ...;

var1.stream()
  .map(a -> convert(a)) // converts each A in var1 to a B; simplifies to this::convert if in the same class as the method
  .forEachOrdered(var2::add); // add each item to var2

//从A转换为B的函数
公共B转换(A){
B=新的B();
b、 setId(a.getId());
返回b;
}
列表var1=。。。;
列表var2=。。。;
var1.stream()
.map(a->convert(a))//将var1中的每个a转换为a B;简化为::convert if与方法在同一个类中
.forEachOrdered(var2::add);//将每个项目添加到var2

您必须将v1中的列表对象从mod1.someClass转换为mod2.someClass。您有相同的示例代码吗?我是c开发人员你能序列化/反序列化它吗?例如转换为JSON或XML,然后返回。这个“BeanUtils”类是什么?您可以从“commons BeanUtils”或“Spring beans”中找到它: