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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 禁欲天堂 | 99r视频在线观看 | 成 人 免费 小说在线观看 | a级免费在线观看 | 日本高清视频在线观看 | bt天堂午夜国产精品 | 操骚0| 羞羞私人影院可以直接免费观影吗 | 国产一卡2卡3卡四卡精品网站 | 男人j放进女人的p视频免费 | 欧美日韩专区国产精品 | 国产免费一区不卡在线 | 国产成人亚洲综合91精品555 | 亚洲成熟人网站 | jj视频免费 | 91婷婷射| 国产chinese男男gaygay | 国内剧情麻豆 | 高清毛片aaaaaaaaa片 | 国产在视频 | 无限观看社区在线视频 | 国产成人精品高清不卡在线 | 欧美色青 | 极品手交handjobtattoo | 欧美一级特黄特色大片免费 | 草女人逼 | 亚洲国产一区二区三区a毛片 | 免费国产在线视频 | 欧美乱妇高清无乱码视频在线 | 鬼吹灯之天星术免费观看 | 农村美女沟厕嘘嘘被偷看 | 公交车强校花系列小说 | 国产欧美日韩精品在线 | 日本偷拍xxxxxxww | 欧美三级小视频 | 污到湿的爽文免费阅读 | 日韩成人一级 | 国产免费又粗又猛又爽视频国产 | 大团圆6全文在线阅读 | 免费毛片在线观看 | 亚洲一卡2卡三卡4卡5卡组 |