使用反射可以在运行时检视类的方法并调用它们。这被用来发现类的getters和setters。你不能直接得到getters和setters,必须扫描类所有的方法并依次检查是否getter或setter。
首先,我们需要建立getters和setters方法的特征:- Gettergetter方法名称以“get”开始,需要0参数,并且返回一个值。
- Settersetter方法名称以“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;}