67
技術社區[雲棲]
Java Reflection(六):Getters and Setters
使用Java反射你可以在運行期檢查一個方法的信息以及在運行期調用這個方法,使用這個功能同樣可以獲取指定類的getters和setters,你不能直接尋找getters和setters,你需要檢查一個類所有的方法來判斷哪個方法是getters和setters。
首先讓我們來規定一下getters和setters的特性:
Getter
Getter方法的名字以get開頭,沒有方法參數,返回一個值。
Setter
Setter方法的名字以set開頭,有一個方法參數。
setters方法有可能會有返回值也有可能沒有,一些Setter方法返回void,一些用來設置值,有一些對象的setter方法在方法鏈中被調用(譯者注:這類的setter方法必須要有返回值),因此你不應該妄自假設setter方法的返回值,一切應該視情況而定。
下麵是一個獲取getter方法和setter方法的例子:
02 |
<pre class="codeBox">public static void printGettersSetters(Class aClass){
|
03 |
Method[] methods = aClass.getMethods();
|
05 |
for(Method method : methods){
|
06 |
if(isGetter(method)) System.out.println("getter: " + method);
|
07 |
if(isSetter(method)) System.out.println("setter: " + method);
|
11 |
public static boolean isGetter(Method method){
|
12 |
if(!method.getName().startsWith("get")) return false;
|
13 |
if(method.getParameterTypes().length != 0) return false;
|
14 |
if(void.class.equals(method.getReturnType()) return false;
|
18 |
public static boolean isSetter(Method method){
|
19 |
if(!method.getName().startsWith("set")) return false;
|
20 |
if(method.getParameterTypes().length != 1) return false;
|
最後更新:2017-05-23 12:02:36