使用反射可以在运行时检视类的方法并调用它们。这被用来发现类的getters和setters。你不能直接得到getters和setters,必须扫描类所有的方法并依次检查是否getter或setter。
首先,我们需要建立getters和setters方法的特征:

  • Getter
    getter方法名称以“get”开始,需要0参数,并且返回一个值。
  • Setter
    setter方法名称以“set”开始,需要1个参数。

Setters方法可能会也可能不会返回一个值。一些Setters返回void、设置值,其他setter方法在方法链上调用(需要返回值)。因此,你不能对Setter方法的返回值做任何假设。
查询一个类的getter和setter方法的示例代码如下:

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;
}

团结
128 声望8 粉丝

诗酒趁年华