首页 > 其他分享 >反射-Class对象功能获取Constructor以及Method

反射-Class对象功能获取Constructor以及Method

时间:2022-08-25 20:55:07浏览次数:75  
标签:System Method Constructor Class personClass out

Class对象功能_获取Constructor

Constructor构造方法:

  创建对象:

    T newInstance(Object… initargs)

    如果使用空参数构造方法创建对象,操作可以简化:Class对象的newInstance方法

public class demo03 {
    public static void main(String[] args) throws Exception {
/*
Class对象功能-获取Constructir
Constructor<?>[] getConstructors()
Constructor<T> getConstructor(Class<?>... parameterTypes)

Constructor<?>[] getDeclaredConstructors()
Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)
Constructor构造方法
创建对象:
  T newInstance(Object... initargs)
  如果使用空参数构造方法创建对象,操作可以简化:Class对象的newInstance方法
忽略访问权限修饰符的安全检查 setAccessible(true):暴力反射
 */
        //0.获取Person的Class对象
        Class<Person> personClass = Person.class;
        //1.Constructor<T> getConstructor(Class<?>... parameterTypes)
        Constructor<Person> constructor = personClass.getConstructor(String.class, int.class);//获取构造器
        System.out.println(constructor);
        System.out.println("-----------");
        Constructor<Person> constructor1 = personClass.getConstructor();
        System.out.println(constructor1);
        //创建有参构造对象
        Person person = constructor.newInstance("张三", 23);
        System.out.println(person);
        //创建空构造对象
        Person person2 = personClass.newInstance();
        System.out.println(person2);
    }
}

 运行结果:

 

 

Class对象功能-获取Method

Method :方法对象:

  执行方法:

    Object invoke(Object obj,Object... args)

  获取方法名称:

    String getName:获取方法名

public class demo_04 {
    public static void main(String[] args) throws Exception {
     Class<Person> personClass = Person.class;
      /*
   Method :方法对象:
  执行方法:
    Object invoke(Object obj,Object... args)
  获取方法名称:
    String getName:获取方法名
      */
        //获取指定名称的方法(无参构造)
        Method eat = personClass.getMethod("eat");
        //创建对象
        Person person = new Person();
        //执行方法
        eat.invoke(person);
        //有参构造
        Method eat1 = personClass.getMethod("eat", String.class);
        eat1.invoke(person, "饭");
        System.out.println("-----------");
        //获取所有public修饰的方法
        Method[] methods = personClass.getMethods();
        for (Method method : methods) {
            System.out.println(method);
            //获取方法名
            String name = method.getName();
            System.out.println(name);
            //忽略访问权限修饰符的安全检查
//            method.setAccessible(true);
        }
        //获取类名
        String className = personClass.getName();
        System.out.println(className);
    }
}

运行结果:

 

标签:System,Method,Constructor,Class,personClass,out
From: https://www.cnblogs.com/qihaokuan/p/16625665.html

相关文章