1 import java.lang.reflect.Field;
2 import java.lang.reflect.InvocationTargetException;
3 import java.lang.reflect.Method;
4
5 /**
6 * Created with IDEA
7 * author:foreign
8 * Date:2019/9/30
9 * Time:10:40
10 */
11 public class ReflectionFk {
12 public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
13 PersonFk personFk = new PersonFk();
14 personFk.setName("foreign");
15
16 Class clazz = PersonFk.class;
17 //1 获取全部private变量
18 Field[] declaredFields = clazz.getDeclaredFields();
19 for (Field field : declaredFields) {
20 field.setAccessible(true);
21 System.out.println("获取private字段:" + field);
22 }
23 //1.1 获取指定的private变量
24 Field name = clazz.getDeclaredField("name");
25 name.setAccessible(true);
26 String str = (String) name.get(personFk);
27 System.out.println("name字段值:" + str);
28
29 //2 获取全部private方法
30 Method[] declaredMethods = clazz.getDeclaredMethods();
31 for (Method method : declaredMethods) {
32 method.setAccessible(true);
33 System.out.println("获取private方法: " + method);
34 }
35 //2.1 获取指定private方法
36 PersonFk personFk1 = new PersonFk("123");
37 Method getDepartmentId = clazz.getDeclaredMethod("getDepartmentId", null);
38 getDepartmentId.setAccessible(true);
39 String returnStr = (String) getDepartmentId.invoke(personFk1, null);
40 System.out.println("获取指定的private方法:" + returnStr);
41 }
42 }
实体类
1 /**
2 * Created with IDEA
3 * author:foreign
4 * Date:2019/9/30
5 * Time:10:39
6 */
7 public class PersonFk {
8 private String name;
9 private Integer age;
10 private Boolean gender;
11 public String desc;
12 private String departmentId;
13
14 public PersonFk(String name, Integer age, Boolean gender, String desc, String departmentId) {
15 this.name = name;
16 this.age = age;
17 this.gender = gender;
18 this.desc = desc;
19 this.departmentId = departmentId;
20 }
21
22 public PersonFk(String departmentId) {
23 this.departmentId = departmentId;
24 }
25
26 public PersonFk() {
27 }
28
29 public String getName() {
30 return name;
31 }
32
33 public void setName(String name) {
34 this.name = name;
35 }
36
37 public Integer getAge() {
38 return age;
39 }
40
41 public void setAge(Integer age) {
42 this.age = age;
43 }
44
45 public Boolean getGender() {
46 return gender;
47 }
48
49 public void setGender(Boolean gender) {
50 this.gender = gender;
51 }
52
53 public String getDesc() {
54 return desc;
55 }
56
57 public void setDesc(String desc) {
58 this.desc = desc;
59 }
60
61 private String getDepartmentId() {
62 return departmentId;
63 }
64
65 public void setDepartmentId(String departmentId) {
66 this.departmentId = departmentId;
67 }
68 }
标签:反射,Java,String,私有,PersonFk,private,departmentId,public,name
来源: https://www.cnblogs.com/fangke/p/11611919.html