【译】6. Java反射——Getter和Setter

 原文地址:http://tutorials.jenkov.com/java-reflection/getters-setters.html

 ============================================================================================ 

     使用Java反射你可以检查类的方法并在运行时调用它们。这个可以用来检测一个给定类所包含的Getter和Setter方法。你不能明确的获取Getter和Setter,所以你不得不通过扫描类里面的所有方法,然后检查每个方法是不是Getter方法或者Setter方法。
     首先,让我们建立一些描述Getter和Setter特征的规则:

  • Getter

  一个getter方法的方法名易“get”开头,不接受参数,返回一个值。

  • Setter

  一个setter方法的方法名以“set”开头,接受一个参数。
     setter方法既可以返回值也可以不返回值。一些setter方法返回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;
}

 ========================================================================================

posted on 2018-06-26 18:33  腾飞的鹰  阅读(210)  评论(0)    收藏  举报

导航