1. 程式人生 > >Java反射機制的簡單應用

Java反射機制的簡單應用

mod arc pos ret system containe java反射機制 track san

一直感覺java的反射機制非常強大,可是可用的地方不多。在android學習的時候。一直想實現掛斷電話的功能,可是系統並沒有提供開放的api接口,看了一下網上使用反射機制來實現該功能,確實非常強大,非常有用。

今天在相應的web開發中,client須要提交參數給server,自己已經寫好了相應的bean文件。可是每一次都須要就其內部的key-value進行拼接,比較麻煩,突然想起了了反射機制,嘗試了一下,確實很的好用。以下看一下代碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Bean{

hl=en&q=allinurl%3Astring+java.sun.com&btnI=I%27m%20Feeling%20Lucky" style="">String name;

hl=en&q=allinurl%3Astring+java.sun.com&btnI=I%27m%20Feeling%20Lucky" style="">String property;
public

hl=en&q=allinurl%3Astring+java.sun.com&btnI=I%27m%20Feeling%20Lucky" style="">String

getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getProperty() {
return property;
}
public void setProperty(String property) {
this.property = property;
}
}

上面是一個Bean類,有2個屬性,在請求server時,我須要將其拼接為name=xxx&property=xxx,一個還好,非常多這種憑借就須要將其抽象出來了,以下使用反射機制對其拼接。

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
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

public class ParamsUtil {
public static void main(String[] args) throws IllegalArgumentException,
IllegalAccessException, UnsupportedEncodingException {
//設置屬性
Bean bean = new Bean();
bean.setName("blog.androiddevelop.cn");
bean.setProperty("master");

//獲取全部變量
Field[] fields = bean.getClass().getDeclaredFields();

StringBuffer sb = new StringBuffer("");
for (int i = 0; i < fields.length; i++) {
sb.append(fields[i].getName());
sb.append("=");
sb.append(

hl=en&q=allinurl%3Aurlencoder+java.sun.com&btnI=I%27m%20Feeling%20Lucky" style="">URLEncoder.encode(String.valueOf(fields[i].get(bean)),
"UTF-8"));
if (i < fields.length - 1)
sb.append("&");
}
System.out.println(sb.toString());
}
}

這樣下來就將參數進行了拼接。當然,這樣也有一定的弊端,要處理的對象裏面的變量不能是非常復雜的類型。


很多其它文章請前往小胖軒.

Java反射機制的簡單應用