gpt4 book ai didi

java.lang.NoSuchFieldException : when using reflection 异常

转载 作者:搜寻专家 更新时间:2023-11-01 02:55:46 25 4
gpt4 key购买 nike

public static <A, B> B convert(A instance,
Class<B> targetClass) throws Exception {
B target = (B)targetClass.newInstance();

for (Field targetField : targetClass.getDeclaredFields()) {
targetField.setAccessible(true);
Field field =
instance.getClass().getDeclaredField(targetField.getName());
field.setAccessible(true);
targetField.set(target, field.get(instance));
}
return target;
}

上面是我从论坛上得到的代码,当我试图反射(reflect)一个单一类型的对象时,它起作用了,但是当我尝试复杂类型时,这意味着 ClassA 我得到了 ClassB 对象,我得到了 java.lang.NoSuchFieldException。谁能帮帮我?

最佳答案

您有两个不同的类,它们很可能具有不同的字段集。因此,如果您的类 A 没有与您的类 B 相同的字段,则会抛出异常。

我建议使用 BeanUtils.copyProperties(source, target)来自 apache commons-beanutils .您只需自己创建第二个对象,并将其传递给方法。如果字段不同,它不会抛出异常。

这段代码的最终目标是什么?

关于java.lang.NoSuchFieldException : when using reflection 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2026369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com