码迷,mamicode.com
首页 > 编程语言 > 详细

反射-私有变量/私有方法-Java

时间:2019-09-30 12:44:29      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:methods   eth   access   tde   exce   main   实体类   string   rgs   

 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

标签:methods   eth   access   tde   exce   main   实体类   string   rgs   

原文地址:https://www.cnblogs.com/fangke/p/11611919.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!