使用Java反射使得你能在程序运行时获取到类的方法。这就使得我们可以获取类中定义的getter和setter方法。你不能准确的获取getter和setter方法,但是遍历所有的方法来确定是不是getter和setter。
首先告诉你getter和setter的规则:
- Getter,Getter方法是一
get
开头,没有参数和返回值。
- Setter,Setter方法一
set
开头,有一个参数。
Setter方法可能有返回值要可能没有。有的返回为void
,有些满足链试调用来设置值。因此你不能确定一个Setter方法的返回值。
找到getter和setter方法的列子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| 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; }
|
原文