为了账号安全,请及时绑定邮箱和手机立即绑定

java反射调用时如果返回值是整型数组怎么处理?

java反射调用时如果返回值是整型数组怎么处理?

互换的青春 2019-03-23 15:18:28
想通过java的反射功能将javaBean转换成map:    public static Map<String, String> toMap(Object javaBean) {        Map<String, String> result = new HashMap<>();        Method[] methods = javaBean.getClass().getDeclaredMethods();        for (Method method : methods) {            try {                if (method.getName().startsWith("get")) {                    String field = method.getName();                    field = field.substring(field.indexOf("get") + 3);                    field = field.toLowerCase().charAt(0) + field.substring(1);                    Object value = method.invoke(javaBean, (Object[]) null);                    String val = "";                    if (value != null) {                        if (value.getClass().isArray()) {                            Object[] array = (Object[]) value;                            val = "[";                            boolean flag = true;                            for (Object o : array) {                                if (flag) {                                    flag = false;                                    val += o.toString();                                } else {                                    val += ", " + o.toString();                                }                            }                            val += "]";                        } else {                            val = value.toString();                        }                        result.put(field, val);                    }                }            } catch (Exception e) {                e.printStackTrace();            }        }        return result;如果javabean中有整型数组的话,以上程序就无法正常使用了,比如如下的javabean:public class Student {    private int id;    private String name;    private String desc;    private String[] phones;    private List<String> addresses;    private int[] scores;        //getter and setter ...其中对scores的转换会遇到问题:java.lang.ClassCastException: [I cannot be cast to [Ljava.lang.Object;请问我该如何处理原始类型的数组?
查看完整描述

1 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

要用 java.lang.reflect.Array 来处理数组,所以我把 if (value.getClass().isArray()) 那一代码给你改了


if (value.getClass().isArray()) {

    int length = Array.getLength(value);

    System.out.println(length);

    StringBuffer buffer = new StringBuffer();

    buffer.append('[');

    for (int i = 0; i < length; i++) {

        Object v = Array.get(value, i).toString();

        buffer.append(v == null ? "<null>" : v.toString())

            .append(", ");

    }

    if (buffer.length() > 1) {

        // 大于 1 说明除了 '[' 外还有其它的,即数据不为空

        buffer.delete(buffer.length() - 2, buffer.length());

    }

    buffer.append(']');

    val = buffer.toString();

    System.out.println(val);

}


查看完整回答
反对 回复 2019-04-17
  • 1 回答
  • 0 关注
  • 500 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号