当前位置: 首页 > 面试题库 >

通过反射将所有值从一类中的字段复制到另一类中

越学文
2023-03-14
问题内容

我有一堂课,基本上是另一堂课的副本。

public class A {
  int a;
  String b;
}

public class CopyA {
  int a;
  String b;
}

我正在做的是在通过Web服务调用发送之前,将类中的值A放入。现在,我想创建一个反射方法,该方法基本上将类(按名称和类型)相同的所有字段在类之间复制。CopyA``CopyA``A``CopyA

我怎样才能做到这一点?

到目前为止,这是我所拥有的,但效果不佳。我认为这里的问题是我试图在要遍历的字段上设置一个字段。

private <T extends Object, Y extends Object> void copyFields(T from, Y too) {

    Class<? extends Object> fromClass = from.getClass();
    Field[] fromFields = fromClass.getDeclaredFields();

    Class<? extends Object> tooClass = too.getClass();
    Field[] tooFields = tooClass.getDeclaredFields();

    if (fromFields != null && tooFields != null) {
        for (Field tooF : tooFields) {
            logger.debug("toofield name #0 and type #1", tooF.getName(), tooF.getType().toString());
            try {
                // Check if that fields exists in the other method
                Field fromF = fromClass.getDeclaredField(tooF.getName());
                if (fromF.getType().equals(tooF.getType())) {
                    tooF.set(tooF, fromF);
                }
            } catch (SecurityException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (NoSuchFieldException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalArgumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
    }

我敢肯定一定有人已经这样做了


问题答案:

如果您不介意使用第三方库,则Apache
Commons的BeanUtils将使用轻松地处理此问题copyProperties(Object, Object)



 类似资料:
  • 我有这个问题。但我很难解释,因为我不知道确切的术语。希望有人能理解。我会尽力描述。我觉得这与

  • 问题内容: 所以我有: 是否有一条sql语句将所有内容从id复制到number? 我将要编写一个php scrip进行选择,然后更新每一行。我的SQL知识很基础,但是我敢肯定有一个聪明的方法可以做到这一点: 背景:ID过去一直是应用程序中显示的数字,并且是唯一的。该数字在我要添加的一些新功能中不再是唯一的-因此我需要将其移动到不唯一的字段中,同时保持旧的完整性。 问题答案: 您可以使用更新语句并引

  • 我试图理解变量的范围,以及如何使用从一个类初始化的变量,并在另一个类中使用它们,但接下来我的理解就卡住了。 我有一个类Test1,定义如下: 我在我的中调用这个类: 我有另一个类Test2: 如果随后在main中调用该方法,则值val将显示为0,而不是33。如何在另一个类中访问内存中的值? 谢谢

  • 我是Java中Spring框架的新手。并且有一些问题… 我的应用程序使用Spring、Spring seq的安全性、Hibernate框架。 我正在编写一些简单的应用程序。 我有一个页面,可以通过Hibernate将用户添加到db。 用户类: 角色类: 保存在控制器中: 在UserDAO中保存 我在页面上有一个选择块,我可以在其中选择用户角色作为字符串。 所以在保存用户时,我有 所以据我所知,我应

  • 问题内容: 假设您已经定义了Python数据类: 将值从一个实例复制到另一个实例的最简单方法是什么? 这是我尝试实现的示例: 作为边界条件,我不想创建新实例并将其分配给。好的,我 可以 遍历所有定义的字段,然后逐个复制值,但是我想必须有一种更简单的方法。 问题答案: 我认为遍历这些字段可能是最简单的方法。我能想到的所有其他选项都涉及创建一个新对象。

  • 问题内容: 如何将值从一列复制到另一列?我有: 我希望有: 我应该有哪些mysql查询? 问题答案: 有关代码的简短答案是: 这是表名,周围是重音符号(又称“-”),因为这是MySQL惯例,用于转义关键字(在这种情况下为关键字)。 请注意,这是非常危险的查询,它将擦除表每行中列中的所有内容,并替换为(无论其值如何) 使用子句将查询限制为仅特定的行集更为常见: