Java Reflection - Getters and Setters

原文链接:http://tutorials.jenkov.com/java-reflection/getters-setters.html

通过使用 Java 反射,我们可以在程序运行时观察 classes 的 methods 还可以调用这些方法。通过 methods 我们可以知道一个给定的类到底有哪些 get 、 set 方法。我们不能显式的访问 get 、 set 方法,所以我们必须遍历一个类的所有的方法来判断它是不是一个 get 或者 set 方法。
首先让我们来给 get 、 set 方法下个定义吧:

Get 方法

1、 get 方法名称以 "get" 开头

2、参数个数为0

3、有一个返回值

Set 方法

1、 set 方法名称以 "set" 开头

2、只有一个参数。
set 方法有可能有一个返回值,也有可能没有返回值。一些 set 方法的返回 void ,一些 set 方法返回一个集合,一些 set 方法是用于在方法调用链中的,具体的返回类型也不清楚,所以我们就不要妄自假设 set 方法的返回类型。

下面的这段代码可以找出一个类中的 get 和 set 方法:

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;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值