作者: Jakob Jenkov 譯者:葉文海(yewenhai@gamil.com)
使用 Java 反射你可以在運行期檢查一個方法的信息以及在運行期調(diào)用這個方法,使用這個功能同樣可以獲取指定類的 getters 和 setters,你不能直接尋找 getters 和 setters,你需要檢查一個類所有的方法來判斷哪個方法是 getters 和 setters。
首先讓我們來規(guī)定一下 getters 和 setters 的特性:
Getter 方法的名字以 get 開頭,沒有方法參數(shù),返回一個值。
Setter 方法的名字以 set 開頭,有一個方法參數(shù)。
setters 方法有可能會有返回值也有可能沒有,一些 Setter 方法返回 void,一些用來設(shè)置值,有一些對象的 setter 方法在方法鏈中被調(diào)用(譯者注:這類的 setter 方法必須要有返回值),因此你不應(yīng)該妄自假設(shè) setter 方法的返回值,一切應(yīng)該視情況而定。
下面是一個獲取 getter方法和 setter方法的例子:
查看源代碼打印幫助
</pre>
<pre class="codeBox">public static void printGettersSetters(Class aClass){
Method[] methods = aClass.getMethods();
for(Method method : methods){
if(isGetter(method)) System.out.println("getter: " + method);
if(isSetter(method)) System.out.println("setter: " + method);
}
}
public static boolean isGetter(Method method){
if(!method.getName().startsWith("get")) return false;
if(method.getParameterTypes().length != 0) return false;
if(void.class.equals(method.getReturnType()) return false;
return true;
}
public static boolean isSetter(Method method){
if(!method.getName().startsWith("set")) return false;
if(method.getParameterTypes().length != 1) return false;
return true;
}</pre>
<pre>