java获取对象属性类型、属性名称、属性值

刺骨的言语ヽ痛彻心扉 2022-06-13 00:18 573阅读 0赞
  1. /**
  2. * 根据属性名获取属性值
  3. * */
  4. private Object getFieldValueByName(String fieldName, Object o) {
  5. try {
  6. String firstLetter = fieldName.substring(0, 1).toUpperCase();
  7. String getter = "get" + firstLetter + fieldName.substring(1);
  8. Method method = o.getClass().getMethod(getter, new Class[] {});
  9. Object value = method.invoke(o, new Object[] {});
  10. return value;
  11. } catch (Exception e) {
  12. log.error(e.getMessage(),e);
  13. return null;
  14. }
  15. }
  16. /**
  17. * 获取属性名数组
  18. * */
  19. private String[] getFiledName(Object o){
  20. Field[] fields=o.getClass().getDeclaredFields();
  21. String[] fieldNames=new String[fields.length];
  22. for(int i=0;i<fields.length;i++){
  23. System.out.println(fields[i].getType());
  24. fieldNames[i]=fields[i].getName();
  25. }
  26. return fieldNames;
  27. }
  28. /**
  29. * 获取属性类型(type),属性名(name),属性值(value)的map组成的list
  30. * */
  31. private List getFiledsInfo(Object o){
  32. Field[] fields=o.getClass().getDeclaredFields();
  33. String[] fieldNames=new String[fields.length];
  34. List list = new ArrayList();
  35. Map infoMap=null;
  36. for(int i=0;i<fields.length;i++){
  37. infoMap = new HashMap();
  38. infoMap.put("type", fields[i].getType().toString());
  39. infoMap.put("name", fields[i].getName());
  40. infoMap.put("value", getFieldValueByName(fields[i].getName(), o));
  41. list.add(infoMap);
  42. }
  43. return list;
  44. }
  45. /**
  46. * 获取对象的所有属性值,返回一个对象数组
  47. * */
  48. public Object[] getFiledValues(Object o){
  49. String[] fieldNames=this.getFiledName(o);
  50. Object[] value=new Object[fieldNames.length];
  51. for(int i=0;i<fieldNames.length;i++){
  52. value[i]=this.getFieldValueByName(fieldNames[i], o);
  53. }
  54. return value;
  55. }

发表评论

表情:
评论列表 (有 0 条评论,573人围观)

还没有评论,来说两句吧...

相关阅读