国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > Java > 正文

Java利用反射獲取object的屬性和值代碼示例

2024-07-13 10:14:55
字體:
來源:轉載
供稿:網友

在看java/203603.html">反射順便做個筆記,目前知道的反射的Object都是要有對象的也就是實體Bean。

referance:

import java.lang.reflect.Field;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * 反射處理Bean,得到里面的屬性值 *  * @author liulinsen * */public class ReflexObjectUtil {	/**   * 單個對象的所有鍵值   *    * @param object   *      單個對象   *    * @return Map<String, Object> map 所有 String鍵 Object值 ex:{pjzyfy=0.00,   *     xh=01, zzyl=0.00, mc=住院患者壓瘡發(fā)生率, pjypfy=0.00, rs=0, pjzyts=0.00,   *     czydm=0037, lx=921, zssl=0.00}   */	public static Map<String, Object> getKeyAndValue(Object obj) {		Map<String, Object> map = new HashMap<String, Object>();		// 得到類對象		Class userCla = (Class) obj.getClass();		/* 得到類中的所有屬性集合 */		Field[] fs = userCla.getDeclaredFields();		for (int i = 0; i < fs.length; i++) {			Field f = fs[i];			f.setAccessible(true);			// 設置些屬性是可以訪問的			Object val = new Object();			try {				val = f.get(obj);				// 得到此屬性的值				map.put(f.getName(), val);				// 設置鍵值			}			catch (IllegalArgumentException e) {				e.printStackTrace();			}			catch (IllegalAccessException e) {				e.printStackTrace();			}			/*       * String type = f.getType().toString();//得到此屬性的類型 if       * (type.endsWith("String")) {       * System.out.println(f.getType()+"/t是String"); f.set(obj,"12") ;       * //給屬性設值 }else if(type.endsWith("int") ||       * type.endsWith("Integer")){       * System.out.println(f.getType()+"/t是int"); f.set(obj,12) ; //給屬性設值       * }else{ System.out.println(f.getType()+"/t"); }       */		}		System.out.println("單個對象的所有鍵值==反射==" + map.toString());		return map;	}	/**   * 單個對象的某個鍵的值   *    * @param object   *      對象   *    * @param key   *      鍵   *    * @return Object 鍵在對象中所對應得值 沒有查到時返回空字符串   */	public static Object getValueByKey(Object obj, String key) {		// 得到類對象		Class userCla = (Class) obj.getClass();		/* 得到類中的所有屬性集合 */		Field[] fs = userCla.getDeclaredFields();		for (int i = 0; i < fs.length; i++) {			Field f = fs[i];			f.setAccessible(true);			// 設置些屬性是可以訪問的			try {				if (f.getName().endsWith(key)) {					System.out.println("單個對象的某個鍵的值==反射==" + f.get(obj));					return f.get(obj);				}			}			catch (IllegalArgumentException e) {				e.printStackTrace();			}			catch (IllegalAccessException e) {				e.printStackTrace();			}		}		// 沒有查到時返回空字符串		return "";	}	/**   * 多個(列表)對象的所有鍵值   *    * @param object   * @return List<Map<String,Object>> 列表中所有對象的所有鍵值 ex:[{pjzyfy=0.00, xh=01,   *     zzyl=0.00, mc=住院患者壓瘡發(fā)生率, pjypfy=0.00, rs=0, pjzyts=0.00,   *     czydm=0037, lx=921, zssl=0.00}, {pjzyfy=0.00, xh=02, zzyl=0.00,   *     mc=新生兒產傷發(fā)生率, pjypfy=0.00, rs=0, pjzyts=0.00, czydm=0037, lx=13,   *     zssl=0.00}, {pjzyfy=0.00, xh=03, zzyl=0.00, mc=陰道分娩產婦產傷發(fā)生率,   *     pjypfy=0.00, rs=0, pjzyts=0.00, czydm=0037, lx=0, zssl=0.00},   *     {pjzyfy=0.00, xh=04, zzyl=0.75, mc=輸血反應發(fā)生率, pjypfy=0.00, rs=0,   *     pjzyts=0.00, czydm=0037, lx=0, zssl=0.00}, {pjzyfy=5186.12,   *     xh=05, zzyl=0.00, mc=剖宮產率, pjypfy=1611.05, rs=13, pjzyts=7.15,   *     czydm=0037, lx=13, zssl=0.00}]   */	public static List<Map<String, Object>> getKeysAndValues(List<Object> object) {		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();		for (Object obj : object) {			Class userCla;			// 得到類對象			userCla = (Class) obj.getClass();			/* 得到類中的所有屬性集合 */			Field[] fs = userCla.getDeclaredFields();			Map<String, Object> listChild = new HashMap<String, Object>();			for (int i = 0; i < fs.length; i++) {				Field f = fs[i];				f.setAccessible(true);				// 設置些屬性是可以訪問的				Object val = new Object();				try {					val = f.get(obj);					// 得到此屬性的值					listChild.put(f.getName(), val);					// 設置鍵值				}				catch (IllegalArgumentException e) {					e.printStackTrace();				}				catch (IllegalAccessException e) {					e.printStackTrace();				}			}			list.add(listChild);			// 將map加入到list集合中		}		System.out.println("多個(列表)對象的所有鍵值====" + list.toString());		return list;	}	/**   * 多個(列表)對象的某個鍵的值   *    * @param object   * @param key   * @return List<Object> 鍵在列表中對應的所有值 ex:key為上面方法中的mc字段 那么返回的數(shù)據就是: [住院患者壓瘡發(fā)生率,   *     新生兒產傷發(fā)生率, 陰道分娩產婦產傷發(fā)生率, 輸血反應發(fā)生率, 剖宮產率]   */	public static List<Object> getValuesByKey(List<Object> object, String key) {		List<Object> list = new ArrayList<Object>();		for (Object obj : object) {			// 得到類對象			Class userCla = (Class) obj.getClass();			/* 得到類中的所有屬性集合 */			Field[] fs = userCla.getDeclaredFields();			for (int i = 0; i < fs.length; i++) {				Field f = fs[i];				f.setAccessible(true);				// 設置些屬性是可以訪問的				try {					if (f.getName().endsWith(key)) {						list.add(f.get(obj));					}				}				catch (IllegalArgumentException e) {					e.printStackTrace();				}				catch (IllegalAccessException e) {					e.printStackTrace();				}			}		}		System.out.println("多個(列表)對象的某個鍵的值列表====" + list.toString());		return list;	}}

調用:

List<Object> o=?Service.getAllList();
//java反射 解析測試
ReflexObjectUtil.getKeyAndValue(o.get(0));
ReflexObjectUtil.getValueByKey(o.get(0), "mc");
ReflexObjectUtil.getKeysAndValues(o);
ReflexObjectUtil.getValuesByKey(o, "mc");

總結

以上就是本文關于Java利用反射獲取object的屬性和值代碼示例的全部內容,希望對大家有所幫助。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 大同市| 泰安市| 伊金霍洛旗| 舟山市| 浦城县| 长寿区| 靖远县| 荆州市| 红河县| 东至县| 夏河县| 大邑县| 十堰市| 天水市| 云阳县| 濮阳市| 崇义县| 夹江县| 通海县| 亳州市| 娱乐| 江华| 汶川县| 秦安县| 中牟县| 澄江县| 同德县| 中阳县| 星子县| 郓城县| 宜良县| 隆化县| 怀远县| 大余县| 沧源| 枞阳县| 永安市| 肥乡县| 皮山县| 平度市| 宣威市|