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对象功能_获取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); } } }