1. 程式人生 > >java反射機制

java反射機制

else ++ 類型 應該 動態 error param 字母 什麽

最近在做一個項目。

需求是這樣的,前端傳一個參數param表示要從服務器獲取的參數,後端需要把對應的參數從服務器中取出來。

本來覺得沒什麽,應該蠻簡單。結果一看表,嗯,40多個參數,如果用if...else...或者switch來寫估計得寫死我。

所以我就想有沒有這樣的方法,可以通過傳入的param,自動調用對應的getParam方法。

於是就想到java的反射機制。

反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;

對於任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。(抄的別人博客中的話)。

在這裏,我利用java的反射機制目的就是根據動態的param動態調用對象的方法。

話不多說,下面是我的代碼。

                JSONObject json = new JSONObject() ;
                Field[] fields = msgParam.getClass().getDeclaredFields();
                try {
                    for(int i=0;i<fields.length;i++){
                        String attributeName = fields[i].getName();  //獲取屬性名稱
                        String attributeNameUpper = attributeName.substring(0,1).toUpperCase()+attributeName.substring(1); //
屬性名稱首字母大寫 // String attributeType = fields[i].getGenericType().toString(); //獲取屬性類型 if (attributeName.toLowerCase().equals(param)) {//如果屬性名和url中傳入參數的名字相同 Method method = msgParam.getClass().getMethod("get"+attributeNameUpper); //
獲取get方法 String value = (String)method.invoke(msgParam); //調用get方法 json.element(attributeName, value); // } } return json; } catch (Exception e) { // TODO: handle exception json.element("error", "unknown"); //json json.element("msg", "未知錯誤"); return json; }

一堆代碼簡化能這樣,開心,嘿嘿

java反射機制