java反射機制
阿新 • • 發佈:2017-05-12
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反射機制