加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在java中复制类之间的字段

发布时间:2020-12-14 05:10:02 所属栏目:Java 来源:网络整理
导读:我有一对类,其中一个的字段是另一个的字段的子集,超集类的getter都可以预先命名(getFoo()).有没有办法有效地将所有常见字段从超集类复制到子集类,或者至少自动生成代码. 我应该注意到: 由于种种原因,我无法编辑超集类,也不能仅仅使用它们来避免进行数据拷贝
我有一对类,其中一个的字段是另一个的字段的子集,超集类的getter都可以预先命名(getFoo()).有没有办法有效地将所有常见字段从超集类复制到子集类,或者至少自动生成代码.

我应该注意到:

>由于种种原因,我无法编辑超集类,也不能仅仅使用它们来避免进行数据拷贝.
>我可以在子集类中创建新的方法,但是我不能改变它们的字段.
>我们有几十个这样的对,一些班有很多领域,所以手工做这个都是笨拙的.
>一位同事提出了一种创建通用复制方法的方法,该方法使用java反射来接受任何两个类,通过字段迭代字符串,执行字符串操作来确定getter名称,然后执行它来自动设置字段在子类中.这是可怕的,但它似乎工作.我真的希望有一个更好的方法.

编辑:一些简单的代码要求

public class SuperClass {
  private int foo;
  private int bar;
  private float bat;
  public int getFoo() { return foo; }
  public int getBar() { return bar; }
  public float getBat() { return bat; }
}

public class SubClass {
  private int foo;
  private float bat;
}

//wanted
public static copySuperFieldsToSubMethod(Object super,Object sub) { ??? }

// also acceptable would be some way to autogenerate all the assignment 
// functions needed

解决方法

您可以使用Spring框架中的BeanUtils类来执行此操作.它可能不一定比基于反射的技术更有效,但代码很简单.我期望所有你需要做的是:
BeanUtils.copyProperties(source,target);

此方法的Javadoc可在http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/beans/BeanUtils.html#copyProperties(java.lang.Object,%20java.lang.Object)获得

如果不适合,您还可以考虑在Spring Framework中使用BeanWrapper / BeanWrapperImpl来遍历类的属性.这将比使用低级反射API更简单.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读