失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【分享】java反射获取 设置 打印对象属性 对象转map基础工具

【分享】java反射获取 设置 打印对象属性 对象转map基础工具

时间:2024-03-17 13:46:40

相关推荐

【分享】java反射获取 设置 打印对象属性 对象转map基础工具

package com.lion.util;import java.lang.reflect.Field;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;/**** @author liyongyao**/public class GetClassInfo {/*** 获得属性名** @param object* @return*/public static ArrayList<String> ComponentsName(Object object) {Field[] fields = object.getClass().getDeclaredFields();ArrayList<String> filedName = new ArrayList<String>();for (int i = 0; i < fields.length; i++) {try {String varName = fields[i].getName();boolean accessFlag = fields[i].isAccessible();fields[i].setAccessible(true);filedName.add(varName);fields[i].setAccessible(accessFlag);} catch (SecurityException e) {e.printStackTrace();} catch (IllegalArgumentException e) {e.printStackTrace();}}return filedName;}/*** 获取键值对** @param object* @return*/public static Map<String, Object> ComponentsNameAndValue(Object object) {Field[] fields = object.getClass().getDeclaredFields();Map<String, Object> nameAndValue = new HashMap<String, Object>();ArrayList<String> filedName = new ArrayList<String>();ArrayList<Object> filedValue = new ArrayList<Object>();for (int i = 0; i < fields.length; i++) {try {boolean accessFlag = fields[i].isAccessible();fields[i].setAccessible(true);String varName = fields[i].getName();Object varValue = fields[i].get(object);filedName.add(varName);filedValue.add(varValue);fields[i].setAccessible(accessFlag);} catch (Exception e) {e.printStackTrace();}}nameAndValue.put("value", filedValue);nameAndValue.put("key", filedName);return nameAndValue;}/*** 获取键值对打印到控制台** @param object* @return*/public static void printClassInfo(Object object) {Field[] fields = object.getClass().getDeclaredFields();for (int i = 0; i < fields.length; i++) {try {boolean accessFlag = fields[i].isAccessible();fields[i].setAccessible(true);String varName = fields[i].getName();Object varValue = fields[i].get(object);System.out.println(varName + "=" + varValue);fields[i].setAccessible(accessFlag);} catch (Exception e) {e.printStackTrace();}}}/*** 根据属性名称查找对象中的相应值** @param name* 属性名* @param object* 要查找的对象* @return Object 返回属性对应的值*/public static Object getValueByName(String name, Object object) {try {Field f = object.getClass().getDeclaredField(name);boolean accessFlag = f.isAccessible();f.setAccessible(true);Object o = f.get(object);f.setAccessible(accessFlag);return o;} catch (Exception e) {e.printStackTrace();}return null;}public static Object setValueByName(String name, Object value, Object object) {try {Field f = object.getClass().getDeclaredField(name);boolean accessFlag = f.isAccessible();// 获得原始权限f.setAccessible(true);// 权限设置为可访问f.set(object, value);f.setAccessible(accessFlag);// 还原权限return object;} catch (Exception e) {e.printStackTrace();}return null;}}

如果觉得《【分享】java反射获取 设置 打印对象属性 对象转map基础工具》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。