• 欢迎光临~

反射_Class对象功能_获取Constructor-反射_Class对象功能_获取Method

开发技术 开发技术 2022-08-02 次浏览

反射_Class对象功能_获取Constructor

Constructor<?>[] getConstructors()

Constructor<T> getConstructor(Class<?>... parameterTypes)

 

Constructor<?>[] getDeclaredConstructors()

Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)

 

Constructor构造方法

创建对象:

T newInstance(Object... initargs)

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

 

 

忽略访问权限修饰符的安全检查 setAccessible(true):暴力反射

import domain.Person;
 
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
 
public class ReflectDemo3 {
    public static void main(String[] args) throws Exception {
 
        //0、获取Person的Class对象
        Class personClass = Person.class;
 
        //Constructor<?>[] getConstructors()
        Constructor constructor = personClass.getConstructor(String.class,int.class);
        System.out.println(constructor);
        //创建对象
        Object person = constructor.newInstance("张三", 23);
        System.out.println(person);
 
        System.out.println("--------");
 
        Constructor constructor1 = personClass.getConstructor();
        System.out.println(constructor1);
        //创建对象
        Object person1 = constructor1.newInstance();
        System.out.println(person1);
 
        Object o = personClass.getConstructor().newInstance();
        System.out.println(o);
    }
}

运行结果:

反射_Class对象功能_获取Constructor-反射_Class对象功能_获取Method

 

 

反射_Class对象功能_获取Method

Method[] getMethods()

Method getMethod(String name, Class<?>... parameterTypes)

 

Method[] getDeclaredMethods()

Method getDeclaredMethod(String name, Class<?>... parameterTypes)

 

Method :方法对象:

执行方法:

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

获取方法名称:

String getName:获取方法名

import domain.Person;
 
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
 
public class ReflectDemo4 {
    public static void main(String[] args) throws Exception {
 
        //0、获取Person的Class对象
        Class personClass = Person.class;
 
        //获取成员方法
        Method eat_method = personClass.getMethod("eat");
        Person p = new Person();
        //执行方法
        eat_method.invoke(p);
 
        Method eat_method2 = personClass.getMethod("eat", String.class);
        //执行方法
        eat_method2.invoke(p,"");
 
        System.out.println("-------------");
        //获取所有public修饰的方法
        Method[] methods = personClass.getMethods();
        for(Method method : methods){
            System.out.println(method);
            String name = method.getName();
            System.out.println(name);
        }
    }
}

运行结果:

反射_Class对象功能_获取Constructor-反射_Class对象功能_获取Method

 

喜欢 (0)