1,获取Constructor
* Field getDeclaredField(String name)
2. 获取构造方法们
* Constructor<?>[] getConstructors()
* Constructor<T> getConstructor(类<?>... parameterTypes)
* Constructor<T> getDeclaredConstructor(类<?>... parameterTypes)
* Constructor<?>[] getDeclaredConstructors()
* Constructor:构造方法
* 创建对象:
* T newInstance(Object... initargs)
* 如果使用空参数构造方法创建对象,操作可以简化:Class对象的newInstance方法
package reflect;
import domain.Person;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
/*
获取构造方法们
* Constructor<?>[] getConstructors()
* Constructor<T> getConstructor(类<?>... parameterTypes)
* Constructor<T> getDeclaredConstructor(类<?>... parameterTypes)
* Constructor<?>[] getDeclaredConstructors()
*/
public class ReflectDemo03 {
public static void main(String[] args) throws Exception {
//1.获取Person的class对象
Class person = Person.class;
// Constructor<T> getConstructor(类<?>... parameterTypes)
Constructor constructor = person.getConstructor(String.class, int.class);//带参数的构造器用来创建对象的,Person中有带参构造方法
System.out.println(constructor);//public domain.Person(java.lang.String,int)
//创建对象
Object obj = constructor.newInstance("tt", 23);//创建对象 构造器.newInstance
System.out.println(obj);//输出Person{name='tt', age=23, a='null', b='null', c='null', d='null'}
System.out.println("===================");
Constructor constructor02 = person.getConstructor();//空参构造器用来创建对象的
System.out.println(constructor02);//public domain.Person()
//创建对象
Object obj02 = constructor02.newInstance();//创建对象 构造器.newInstance
System.out.println(obj02);//Person{name='null', age=0, a='null', b='null', c='null', d='null'}
//如果使用空参构造对象 可以简化 可以使用class对象的
Object obj03 = person.newInstance();//使用该种方式空参构造
System.out.println(obj03);//Person{name='null', age=0, a='null', b='null', c='null', d='null'}
System.out.println("========");
//getDeclaredConstructor
Constructor declaredConstructor = person.getDeclaredConstructor(String.class,int.class);
Object obj04 = declaredConstructor.newInstance("yy", 22);
declaredConstructor.setAccessible(true);
System.out.println(obj04);//Person{name='yy', age=22, a='null', b='null', c='null', d='null'}
}
}