日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2023/12/31 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【分享】java反射获取、设置、打印对象属性,对象转map基础工具 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
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();}}}/*** 根據(jù)屬性名稱查找對象中的相應(yīng)值** @param name* 屬性名* @param object* 要查找的對象* @return Object 返回屬性對應(yīng)的值*/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();// 獲得原始權(quán)限f.setAccessible(true);// 權(quán)限設(shè)置為可訪問f.set(object, value);f.setAccessible(accessFlag);// 還原權(quán)限r(nóng)eturn object;} catch (Exception e) {e.printStackTrace();}return null;} }


轉(zhuǎn)載于:https://blog.51cto.com/liyongyao/1206765

總結(jié)

以上是生活随笔為你收集整理的【分享】java反射获取、设置、打印对象属性,对象转map基础工具的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。