一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java利用反射獲取object的屬性和值代碼示例

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

2021-03-07 12:17Spirit橋 Java教程

這篇文章主要介紹了Java利用反射獲取object的屬性和值代碼示例,具有一定借鑒價值,需要的朋友可以參考下。

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

referance:Java反射簡易教程

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
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=住院患者壓瘡發生率, 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=住院患者壓瘡發生率, pjypfy=0.00, rs=0, pjzyts=0.00,
   *     czydm=0037, lx=921, zssl=0.00}, {pjzyfy=0.00, xh=02, zzyl=0.00,
   *     mc=新生兒產傷發生率, pjypfy=0.00, rs=0, pjzyts=0.00, czydm=0037, lx=13,
   *     zssl=0.00}, {pjzyfy=0.00, xh=03, zzyl=0.00, mc=陰道分娩產婦產傷發生率,
   *     pjypfy=0.00, rs=0, pjzyts=0.00, czydm=0037, lx=0, zssl=0.00},
   *     {pjzyfy=0.00, xh=04, zzyl=0.75, mc=輸血反應發生率, 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字段 那么返回的數據就是: [住院患者壓瘡發生率,
   *     新生兒產傷發生率, 陰道分娩產婦產傷發生率, 輸血反應發生率, 剖宮產率]
   */
    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的屬性和值代碼示例的全部內容,希望對大家有所幫助。如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

原文鏈接:https://www.cnblogs.com/Spirit612/p/6732008.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 青柠网在线观看视频 | 俄罗斯三级在线观看级 | 国产精品中文字幕 | 99热精品在线观看 | 香蕉久久ac一区二区三区 | 亚洲精品一区二区三区在线看 | 91成| www视频免费观看 | yy8090韩国日本三理论免费 | 亚洲婷婷在线视频 | 美女全身无遮挡 | 久久草福利自拍视频在线观看 | 精品国产自在天天线2019 | 赤坂丽女医bd无删减在线观看 | 欧美精品久久久久久久免费观看 | 扒开女人下面使劲桶屁股动漫 | 99久久香蕉国产综合影院 | 美女污视频 | 男女羞羞的视频 | 亚洲高清免费在线观看 | 五月性| 黑人巨大爆粗亚裔女人 | 免费亚洲视频在线观看 | 日本不卡1卡2卡三卡网站二百 | 欧美国产日本精品一区二区三区 | 美女一级ba大片免色 | 男生操女生的漫画 | 国产香蕉在线视频 | 欧美一级在线播放 | 91tv破解版不限次数 | 天堂69亚洲精品中文字幕 | 国产精品久久久久久久久免费 | 欧美午夜寂寞影院安卓列表 | 国色天香社区视频免费高清在线观看 | 9久热这里只有精品免费 | 国产午夜精品久久理论片 | 成人影院在线观看 | 国产欧美综合精品一区二区 | 天天天做天天天天爱天天想 | 男女性刺激爽爽免费视频 | 边吃胸边膜下刺激免费男对女 |