java - 反射 IllegalArgumentException

标签 java reflection

我需要从一个类获取私有(private)字段并将它们设置到另一个类。

此代码非常适合测试整数字段(写入 100500 值):

//get objects, class firs...

for(int i =0; i<fields1.length; i++) {
    Field field1 = fields1 [i];
    Field field = fields [i];
    field.setAccessible(true);
    field.set(app,  new Integer(100500));       
}

尽管如此,当我切换到未定义类型时(字段属于不同类型:日期、整数、字符串...

例如,第一类有日期,第二类有日期,我需要从另一个复制一个值,但下一个字段在两个类中都是字符串)

for(int i =0; i<fields1.length; i++) {
    Field field1 = fields1 [i];
    Field field = fields [i];
    field.setAccessible(true);
    field.set(app,  field1);        
}

我收到一个 IllegalArgumentException,例如我真的无法从一个类中获取值并将其设置到另一个类中。

亲爱的社区,请给我一个提示 - 我做错了什么?

最佳答案

对我来说,看起来你交出了字段引用而不是字段值:

for(int i =0; i<fields1.length; i++) {
        Field field1 = fields1 [i];
        Field field = fields [i];
        field.setAccessible(true);
        field.set(app,  field1.get(app1)); //or whatever object field1 is from        
        }

虽然我不会那样做,因为秩序是一个脆弱的东西...... 你可以使用 beanutils复制你的 beans,如果是,你想要实现什么

关于java - 反射 IllegalArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14685105/

相关文章:

java - 获取方法的泛型类型

c# - 反射和装箱值类型

java - 找不到 com.mysql.jdbc.Driver

java - type[] varName 和 type varName[] 的区别?

java - 使用类路径中的 .p12 文件作为 GoogleCredential

c# - 无法从我的 Silverlight 应用程序调用 Assembly.GetName()

scala - 获取选项的实际类型[Any]

java - 如何将 setAccessible 限制为仅 "legitimate"使用?

java - 附加到先前输出的 JSP 错误页面

java - Kotlin 对象等于与 Java 对象等于