一、目录
- 创建对象的方式
- 利用setAccessible操作属性
- 利用setAccessible操作方法
二、创建对象的方式
- 方式一:调用类中的public修饰的无参构造器。
相关方法:newInstance:调用类中的无参构造器,获取对应类的对象。 - 方式二:调用类中的指定构造器。
相关方法:- getConstructor(Class…clazz):根据参数列表,获取对应的构造器对象。只获取public的构造器。
- getDecalaredConstructor(Class…clazz):根据参数列表,获取对应的构造器对象。获取所有构造器。
Constructor类相关方法:
- setAccessible:作用是开启和关闭取消访问安全检查,true为关闭,false为开启。
- newInstance(Object…obj):调用构造器
package com.javareflection;
import java.lang.reflect.Constructor;
public class Person {
public static void main(String[] args) throws Exception{
// 1. 先获取User类的Class对象
Class<?> aClass = Class.forName("com.javareflection.User");
// 2. 通过无参构造器创建对象实例
Object o = aClass.newInstance();
System.out.println(o);
// 3. 通过public的有参构造器创建对象实例
Constructor<?> constructor = aClass.getConstructor(String.class);
Object ton = constructor.newInstance("Ton");
System.out.println(ton);
Constructor<?> constructor1 = aClass.getDeclaredConstructor(int.class, String.class);
constructor1.setAccessible(true