在Java中将具有一个不同字段的两个类合并为一个

在Java中将具有一个不同字段的两个类合并为一个,java,Java,有两个类,除一个字段外,所有字段都相等 A类:字符串S1;字符串S2 B类:字符串S1;字符串S3 预期结果: C类:字符串S1;列表{S2,S3} 有没有紧凑的解决方案可以合并到另一个类中,将不同的字段合并到一个集合中?字符串S1-主键。假设要在编译时创建类型为C的对象。你得介绍另一门课。如下所示: public class C { final String S1; final String List<String> S2AndS3; public

有两个类,除一个字段外,所有字段都相等

A类:字符串S1;字符串S2

B类:字符串S1;字符串S3

预期结果:

C类:字符串S1;列表{S2,S3}


有没有紧凑的解决方案可以合并到另一个类中,将不同的字段合并到一个集合中?字符串S1-主键。

假设要在编译时创建类型为
C
对象。你得介绍另一门课。如下所示:

public class C {

     final String S1;
     final String List<String> S2AndS3;

     public C(A a, B b){
          if(!a.S1.equals(b.S1)){
               throw new IllegalArgumentException("Not the same primary key");
          }
          S1 = a.S1;
          S2AndS3 = Arrays.asList(a.S2, b.S3);
     }
}       

根据需要,将两个对象“合并”为一个。

您想在编译时还是运行时实现它?您想对
C
类做什么,您想作为一个类访问列表,还是只想在运行时合并
S2
S3
这两个类中的一个?或者类A和B的对象?Java对于类来说是相当严格的,也许你最好使用灵活的数据结构而不是类。就像这个例子中的列表地图一样
A a = ...;
B b = ...;
C c = new C(a,b);