Better

业精于勤荒于嬉

Java反射6-setter和getter

Better's Avatar 2017-02-26 Java译文

使用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;
}

原文

This article was last updated on days ago, and the information described in the article may have changed.