1.Constructor:构造方法
创建对象
- T newInstance(Object… initargs)
- 如果使用空参数构造方法创建对象,操作可以简化:Class对象的newInstance方法
2.获取构造方法们
- Constructor<?>[] getConstructors()
- Constructor getConstructor(类<?>…
parameterTypes) - Constructor<?>[] getDeclaredConstructors()
- Constructor getDeclaredConstructor(类<?>…
parameterTypes)
package cn.reflect;
import cn.domain.Person;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
public class ReflectDemo3 {
/**
*Class对象功能:
*获取功能:
1.获取成员变量们
*Field[] getFields()
*Field getField(String name)
*Field[] getDeclaredFields()
*Field getDeclaredField(String name)
2.获取构造方法们
*Constructor<?>[] getConstructors()
*Constructor<T> getConstructor(类<?>... parameterTypes)
*Constructor<?>[] getDeclaredConstructors()
*Constructor<T> getDeclaredConstructor(类<?>... parameterTypes)
3.获取成员方法们
*Method[] getMethods()
*Method getMethod(String name,类<?>... parameterTypes)
*Method[] getDeclaredMethods()
*Method getDeclaredMethod(String name,类<?>... parameterTypes)
4.获取类名
*String getName()
*/
public static void main(String[] args) throws Exception {
//0.获取Person的Class对象
Class personClass = Person.class;
/*
1.获取构造方法们
*Constructor<?>[] getConstructors()
*Constructor<T> getConstructor(类<?>... parameterTypes)
*Constructor<?>[] getDeclaredConstructors()
*Constructor<T> getDeclaredConstructor(类<?>... parameterTypes)
*/
// *Constructor<T> getConstructor(类<?>... parameterTypes)
Constructor constructor = personClass.getConstructor(String.class,int.class);
System.out.println(constructor);
//创建对象
Object person = constructor.newInstance("老张", 27);
System.out.println(person);
System.out.println("-------------------------------------");
//方法空参
Constructor constructor1 = personClass.getConstructor();
System.out.println(constructor1);
//创建对象
Object person1 = constructor1.newInstance();
System.out.println(person1);
//如果使用空参数构造方法创建对象,操作可以简化:Class对象的newInstance方法
Object obj = personClass.newInstance();
System.out.println(obj);
// constructor1.setAccessible(true); //暴力反射
}
}
打印结果: