1. 程式人生 > >Java Reflection(六):Getters and Setters

Java Reflection(六):Getters and Setters

原文地址 作者: Jakob Jenkov 譯者:葉文海([email protected]
使用Java反射你可以在執行期檢查一個方法的資訊以及在執行期呼叫這個方法,使用這個功能同樣可以獲取指定類的getters和setters,你不能直接尋找getters和setters,你需要檢查一個類所有的方法來判斷哪個方法是getters和setters。

首先讓我們來規定一下getters和setters的特性:

Getter

Getter方法的名字以get開頭,沒有方法引數,返回一個值。

Setter

Setter方法的名字以set開頭,有一個方法引數。

setters方法有可能會有返回值也有可能沒有,一些Setter方法返回void,一些用來設定值,有一些物件的setter方法在方法鏈中被呼叫(譯者注:這類的setter方法必須要有返回值),因此你不應該妄自假設setter方法的返回值,一切應該視情況而定。

下面是一個獲取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>