zoukankan      html  css  js  c++  java
  • 反射-Method-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(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 }
  • 相关阅读:
    安卓ADB学习笔记
    css样式和定义的class都没问题,但样式却没生效
    Linux文件系统
    bat批处理下如何像shell一样将命令执行的效果赋值给变量
    windows下svn post-commit的实现
    windows下安装subversion
    nginx sendfile 相关知识
    centos6.9下 svn 1.7.10版本 编译安装
    Django问题 Did you rename .....a ForeignKey
    Django:cookie和session相关问题
  • 原文地址:https://www.cnblogs.com/fangke/p/11611583.html
Copyright © 2011-2022 走看看