import operate327.Demo;
import operate425.demo.demo1.Student;
import java.lang.reflect.Constructor;
/**
* 通过反射获得类的构造引用无视private修饰符
*
* @author silence
*/
public class ClassConstructor {
public static void main(String[] args) throws Exception {
//获得class 字节码文件引用
java.lang.Class<?> clazz = java.lang.Class.forName("operate425.demo.demo1.Student");
//获得class 字节码文件引用
java.lang.Class<?> clzz1 = Student.class;
//获得公共的无参构造
/* Constructor<?> constructor = clzz1.getConstructor();
//创建对象应用,这里必须传入构造方法所需要的实参
Student student = (Student) constructor.newInstance();
System.out.print( student.getName());*/
//获得带公共的参构造器
/* Constructor<?> constructor = clazz.getConstructor(int.class);
//创建对象应用,这里必须传入构造方法所需要的实参
Student student = (Student) constructor.newInstance(23);
System.out.println(student.getAge());*/
//获得私有的无参构造器
/*Constructor<?> declaredConstructor = clazz.getDeclaredConstructor();
//获得私有的构造器必须先临时关闭访问修饰符的权限
declaredConstructor.setAccessible(true);
//创建对象应用,这里必须传入构造方法所需要的实参
Student student = (Student) declaredConstructor.newInstance();
System.out.println(student.getName());*/
//获得私有的有参构造器
/* Constructor<?> declaredConstructor = clazz.getDeclaredConstructor(int.class);
//获得私有的构造器必须先临时关闭访问修饰符的权限
declaredConstructor.setAccessible(true);
//创建对象应用,这里必须传入构造方法所需要的实参
Student student = (Student) declaredConstructor.newInstance(65);
System.out.println(student.getAge());*/
}
}
通过反射获得类的构造引用无视private修饰符
最新推荐文章于 2022-04-25 23:18:23 发布