Java反射-Getter和Setters
时间:2020-01-09 10:36:20 来源:igfitidea点击:
使用Java Reflection,我们可以检查类的方法并在运行时调用它们。这可用于检测给定类具有哪些获取器和设置器。我们不能明确要求getter和setter,因此我们将不得不遍历一个类的所有方法,并检查每个方法是getter还是setter。
首先,让我们建立表征getter和setter方法的规则:
- Getter getter方法的名称以" get"开头,采用0个参数,并返回一个值。
- 设置器设置器方法的名称以" set"开头,并带有1个参数。
设置员可能会或者可能不会返回值。一些设置器返回void,一些设置器返回值,另一些返回调用该设置器的对象以用于方法链接。因此,我们不应对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; }