加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

反射-Method-Java

发布时间:2020-12-15 07:31:23 所属栏目:Java 来源:网络整理
导读:1 import java.lang.reflect.InvocationTargetException; 2 import java.lang.reflect.Method; 3 4 /** 5 * Created with IDEA 6 * author:foreign 7 * Date:2019/9/30 8 * Time:10:40 9 */ 10 public class ReflectionFk { 11 public static void main(Stri
 1 import java.lang.reflect.InvocationTargetException;
 2 import java.lang.reflect.Method;
 3 
 4 /**
 5  * Created with IDEA
 6  * author:foreign
 7  * Date:2019/9/30
 8  * Time:10:40
 9  */
10 public class ReflectionFk {
11     public static void main(String[] args) throws NoSuchMethodException,InvocationTargetException,IllegalAccessException {
12         Class clazz = PersonFk.class;
13         //1 获取所有的public的方法
14         Method[] methods = clazz.getMethods();
15         for (Method method : methods) {
16             System.out.println("public的方法:" + method);
17         }
18         //1.1 获取指定的方法
19         Method setName = clazz.getMethod("setName",new Class[]{String.class});
20         System.out.println("获取指定的方法:" + setName);
21         //1.2 获取指定的无参数方法
22         Method getName = clazz.getMethod("getName",null);
23         System.out.println("获取无参数的方法:" + getName);
24         //2 获取方法的参数
25         Method setAge = clazz.getMethod("setAge",new Class[]{Integer.class});
26         Class<?>[] parameterTypes = setAge.getParameterTypes();
27         for (Class parameter : parameterTypes) {
28             System.out.println("获取方法参数的类型:" + parameter);
29         }
30         //3 获取方法的返回类型
31         Class<?> returnType = setAge.getReturnType();
32         System.out.println("方法的返回类型:" + returnType);
33         //4 通过method调用非静态方法
34         PersonFk personFk = new PersonFk();
35         Method setAge1 = clazz.getMethod("setAge",new Class[]{Integer.class});
36         Object invoke = setAge1.invoke(personFk,Integer.class);
37         System.out.println("调用非静态方法:" + invoke);
38         //4.1 通过method的静态方法,如果setGender为静态方法,则第一个参数传入null即可
39         Method setGender = clazz.getMethod("setGender",Boolean.class);
40         Object invoke1 = setGender.invoke(null,true);
41         System.out.println("调用静态方法:" + invoke1);
42     }
43 }

实体类

 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 
13     public PersonFk(String name,Integer age,Boolean gender,String desc) {
14         this.name = name;
15         this.age = age;
16         this.gender = gender;
17         this.desc = desc;
18     }
19 
20     public PersonFk() {
21     }
22 
23     public String getName() {
24         return name;
25     }
26 
27     public void setName(String name) {
28         this.name = name;
29     }
30 
31     public Integer getAge() {
32         return age;
33     }
34 
35     public void setAge(Integer age) {
36         this.age = age;
37     }
38 
39     public Boolean getGender() {
40         return gender;
41     }
42 
43     public void setGender(Boolean gender) {
44         this.gender = gender;
45     }
46 
47     public String getDesc() {
48         return desc;
49     }
50 
51     public void setDesc(String desc) {
52         this.desc = desc;
53     }
54 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读