【问题标题】:Merge multiple object in a single instance of java.lang.Object在 java.lang.Object 的单个实例中合并多个对象
【发布时间】:2018-07-19 15:06:47
【问题描述】:

我有 3 个对象(假设它们是 A 类的对象 a、B 类的对象 b 和 C 类的对象 c)我需要将它们组合成一个 java.lang.Object 实例(让它成为 o)。所以最终对象 o 将包含上面提到的三个对象。关于如何实现这一目标的任何想法?

【问题讨论】:

  • A aB bC c 是不同的类型。他们可以有不同的方法。 O o 的行为呢?是否应该有ABC的方法?
  • 是的 A、B 和 C 是不同的类型,但它们是只有属性及其 getter 和 setter 的简单对象
  • 您在问题中没有提到HibernateCallback 需要这个。看看这个问题:With springs getHibernateTemplate, how can I get a list of users and limit the result set? 你必须根据你预期的结果类型来设置HibernateCallback 的泛型类型参数。
  • 如果链接的问题对您没有帮助,请编辑您的问题并提供更多上下文信息。显示您正在努力解决的代码。

标签: java oop object reflection


【解决方案1】:

你的意思是这样的吗?

public class Triplet<A, B, C> {
    private final A a;
    private final B b;
    private final C c;
    Triplet(A a, B b, C c){
        this.a = a;
        this.b = b;
        this.c = c;
    }
}

public class MyClassA {}
public class MyClassB {}
public class MyClassC {}

public class Main {
    public static void main(String[] args){
        Object o = new Triplet<>(new MyClassA(), new MyClassB(), new MyClassC());
    }
}

【讨论】:

    【解决方案2】:

    对于 getter ,你可以返回当前数组没有问题 对于 setter ,您可以使用 Collections 算法 addAll 为例:

    String[] values = { "cat", "dog", "bird" };
    setArray(values);
    
    public void setArray(String[] sourceArray){
    
      ArrayList<String> list = new ArrayList<>();
      list.add("elephant");
    
      Collections.addAll(list, values);
    }
    

    【讨论】:

      猜你喜欢
      • 2014-03-01
      • 1970-01-01
      • 2022-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-30
      • 2020-01-18
      • 2013-08-01
      相关资源
      最近更新 更多