java反射调用时如果返回值是整型数组怎么处理?
想通过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;
请问我该如何处理原始类型的数组?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
要用
java.lang.reflect.Array
来处理数组,所以我把if (value.getClass().isArray())
那一代码给你改了