【问题标题】:Converting Java objects?转换 Java 对象?
【发布时间】:2015-02-12 19:30:09
【问题描述】:

如何将一个类的对象转换为另一类的对象?例如,假设对象 A 具有属性“高度”和“重量”。如何检查对象 B 是否具有这些相同的属性?如果对象 B 确实具有与对象 A 相似的属性,我如何将这些值导入对象 A 和/或创建具有这些属性和值的新对象?

感谢您的帮助!

【问题讨论】:

  • 问题太宽泛
  • 这在 Java 中是不可能的,因为它是一种严格的类型语言。解决方法是定义名称-值对类,然后将不同的对存储在一个集合中。您可以在 Java 中轻松地在不同集合之间传输元素。

标签: java xml object jaxb pojo


【解决方案1】:

没有适用于所有情况的单一答案。一些较常见的情况是:

  • 具有相同目的但来自不同库的两个类。每个库仅适用于自己的类型。您需要编写胶水代码,为每个 B 构建一个 A 实例并自己处理转换(使用显式编写的代码)。

  • 两个具有相同目的的类,但您可以控制一个类。消除那个类,只使用另一个。

  • 两个类,但不同目的相同,只有一个共同点。如果你能控制他们两个。使用 inheritance(如果一个是另一个的特殊情况),delegation(这两个类是不相关的,但有一个共同的方面可以被分解)或定义一个接口与公共方面并让两个类实现它。

【讨论】:

    【解决方案2】:

    可以使用Commons-BeanUtils BeanUtilsBean,方法copyProperties

    http://commons.apache.org/proper/commons-beanutils/apidocs/org/apache/commons/beanutils/BeanUtilsBean.html

    代码:

    BeanUtilsBean bub= BeanUtilsBean.getinstance();

    bub.copyProperties(yourObject1Dest,yourObjectOrig);

    【讨论】:

      【解决方案3】:

      如果我得到你的问题:

      public class A{
      int height, weight;
      
        public A(int height, int weight){
          this.height = height;
          this.weight = weight;
        }
      
        public A(A originalObject){
          height = originalObject.height;
          weight = originalObject.weight;
        }
      } 
      
      public class B extends A{
        public B(int height, int weight){
          super(height, weight);
        }
      
        public B(B originalObject){
          super (originalObject);
        }
      
        public static void main(String [] args){
          B bObject = new B(10,20);
          A aObject = new A(bObject);
        }
      }
      

      【讨论】:

        【解决方案4】:

        我建议寻找继承。

        检查对象是否具有某些属性的一种方法是在 IDE 中开始输入您想要的内容,例如:

        物体高度

        在键入“.”之后立即该类的元素会显示出来。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-09-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-04-29
          • 1970-01-01
          • 2011-12-23
          相关资源
          最近更新 更多