• 反射-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 }
  • 相关阅读:
    SVD singular value decomposition
    Eigen参考资料
    设置C++ cout输出精度
    eigenMatrix
    电池容量单位 Wh和 Ah的关系
    windows10 如何关闭快速关机功能电源选项
    TIA Portal 和 scout 之间的驱动器地址分配
    SIMATIC 1500 PLC 同步轴,状态字StatusWord信号描述
    Simotion 凸轮同步,偏移凸轮起点
    ROS Create a Catkin Workspace
  • 原文地址:https://www.cnblogs.com/fangke/p/11611583.html
Copyright © 2020-2023  润新知