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

Java Reflection - Getters and Setters的更多相关文章

  1. 【外文翻译】 为什么我要写 getters 和setters

    原文作者: Shamik Mitra 原文链接:https://dzone.com/articles/why-should-i-write-getters-and-setters 当我开始我的java ...

  2. JavaBean的getters和setters方法自动生成

    xgClass.java文件: public class XgClass { private String ccCityDerate1000Num; } 添加getter/setter方法: 在代码区 ...

  3. [REPRINT]Properties vs. Getters and Setters

    http://www.python-course.eu/python3_properties.php Our new class means breaking the interface. The a ...

  4. Java Reflection(getXXX和getDeclaredXXX)

    package com.sunchao.reflection; public class Person { private int age ; private String name; public ...

  5. 为什么要使用getters和setters/访问器?

    Why use getters and setters/accessors? 实际上会有很多人问这个问题....尤其是它成为Coding Style中一部分的时候. 文章出自LBushkin的回答 T ...

  6. use getters and setters Learning PHP Design Patterns

    w Learning PHP Design Patterns Much of what passes as OOP misuses getters and setters, and making ac ...

  7. Mongoose 预定义模式修饰符 Getters 与 Setters 自定义修饰符

    mongoose 预定义模式修饰符 mongoose 提供的预定义模式修饰符,可以对我们增加的数据进行一些格式化,主要有:lowercase.uppercase .trim,这里不一一演示,对trim ...

  8. java Reflection(反射)基础知识讲解

    原文链接:小ben马的java Reflection(反射)基础知识讲解 1.获取Class对象的方式 1.1)使用 "Class#forName" public static C ...

  9. Java Reflection

    Java语言的反射机制 1. Java反射的含义:获取应用中正在运行的Java对象. 2. Java反射机制: 在运行的程序中,对于任意的类,都可以知道这个类的属性.方法以及构造函数,对于任意对象都可 ...

随机推荐

  1. vsftp迁移记录笔记

     由于之前的服务器用的window下的ftp安全性和稳定性都不好,所以我们才把ftp迁移到linux环境下 vsftp概述: vsftpd 它可以运行在多平台系统上面,是一个完全免费的.开放源代码的f ...

  2. Python 读写文件 小应用:生成随机的测验试卷文件

    去年学习了python的读写文件部分,了解了python读写的常用模块os.shelve,今天准备把课后作业试着自己做一下 目标:1)生成35份试卷.每个试卷有50道选择题 2)为了防止有学生作弊,需 ...

  3. caioj 1112 树形动态规划(TreeDP)7:战略游戏

    这道题和上一道题非常相似 这道题是看边,上一道是看点. 但是状态定义不同 看边的话没有不放不安全这种状态 因为当前结点的父亲无法让这颗子树没有看到的边看到 所以这种状态不存在 而上一道题存在不放不安全 ...

  4. hiho 1068 重新整理的 Sparse-Table(RMQ)模板

    http://hihocoder.com/problemset/problem/1067代码: #include <iostream> #include <cstdio> #i ...

  5. CJOI 05新年好 (最短路+枚举)

    CJOI 05新年好 (最短路+枚举) 重庆城里有n个车站,m条双向公路连接其中的某些车站.每两个车站最多用一条公路连接,从任何一个车站出发都可以经过一条或者多条公路到达其他车站,但不同的路径需要花费 ...

  6. Spring Cloud学习笔记【九】配置中心Spring Cloud Config

    Spring Cloud Config 是 Spring Cloud 团队创建的一个全新项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,它分为服务端与客户端两个部分.其中服务端 ...

  7. mysql(for update)悲观锁总结与实践

    悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态.悲观锁的实现,往往依靠数据库提供的锁机制( ...

  8. Spring Tool Suit安装virgo server插件、virgo的下载

    virgo-tomcat原先是Spring DM Server,后来转eclipse社区维护 安装教程:http://osgi.com.cn/article/7289514 virgo-tomcat各 ...

  9. UITextField监控文字变化方法

    项目里须要在不隐藏键盘的情况下.来更改button 的状态. 这里就是要对uitextfield监控.uitextfield继承于UIControl.所以能够 使用addTarget方法.详细例如以下 ...

  10. cocoapods的安装,使用,卸载,以及你可能会遇到的坑..

    首先, 不会用cocoapods的话如过你接手某些新项目是用cocoapods写的你会疯, 其次他真的非常好用, 当然某些坑也是存在的,比方你用它导入了AFNetwork然后你须要改动一些AF的内部的 ...