如果Bean类包含类的数组,如何使用Reflection?

时间:2018-04-16 12:32:49

标签: java arrays object reflection

下面的bean类包含一个类数组,它是一个多值属性。我试图使用Reflection动态地将值设置为下面的属性。

public class User {

    private String userId;
    private NameDetails[] nameDetails;
    private ContactDetails contactDetails;

    public ContactDetails getContactDetails() {
        return contactDetails;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }      

    public void setContactDetails(ContactDetails contactDetails) {
        this.contactDetails = contactDetails;
    }

    public NameDetails[] getNameDetails() {
        return nameDetails;
    }

    public void setNameDetails(NameDetails[] nameDetails) {
        this.nameDetails = nameDetails;
    } 
}

以下代码是我们实现反射的地方,我无法为数组设置值。

        Class<?> c = Class.forName(method.getReturnType().getComponentType().getName());
        Object arr = Array.newInstance(c, 1);
        Method method = innerFieldType.getMethod("set" + tokens[i], arr.getClass());
        Object obj = Array.get(arr, 0);
        Array.set(obj, 0, finalRefObject);
        method.invoke(finalRefObject, Array.get(arr, 0));
  

&#34; java.lang.IllegalArgumentException:数组元素类型不匹配&#34;

是我们得到的错误。

提前致谢

0 个答案:

没有答案