原文链接: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;
}

最新文章

  1. 一切Web的基础----HTTP
  2. Servlet和JSP学习指导与实践(二):Session追踪
  3. JAVA编程规范(下)
  4. 一个不错的loading效果--IT蓝豹
  5. MFC 中编辑框数字限制范围
  6. Maven——使用Maven构建多模块项目
  7. Ci分开配置网站前台后台的方法
  8. C预处理,条件编译
  9. Uubntu E: Sub-process /usr/bin/dpkg returned an error code问题的解决办法
  10. JavaScript语法学习笔记
  11. Json解析异常处理方式(JSONException: Value of type java.lang.String cannot be converted to JSONObject)
  12. CDH5.16.1的maven依赖版本查询地址
  13. UOJ#73. 【WC2015】未来程序 提交答案题
  14. FFT Cheetsheet
  15. Python——OS模块
  16. Ubuntu 18.04 使用Systemd管理MySQL 5.6
  17. cocos2dx为Sprite添加触摸事件监听器
  18. keycloak docker-compose 运行
  19. [PHP] 看博客学习观察者模式
  20. php非阻塞服务器

热门文章

  1. Select For update语句浅析
  2. ruby redis的集群管理器
  3. 权重轮询调度算法 java版本号
  4. modSecurity规则学习(七)——防止SQL注入
  5. VS 2015支持C语言和C++程序
  6. SSH之IDEA2017整合Struts2+Spring+Hibernate
  7. RAID信息存放位置!
  8. babel的插件
  9. 本地运行github上的vue2.0仿饿了么webapp项目
  10. Levmar:Levenberg-Marquardt非线性最小二乘算法