File size: 2,709 Bytes
0284885 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | package Reflect_package1;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Parameter;
public class Reflect_demo2 {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
/*
Class类中用于获取构造方法的方法:
Constructor<?>[] getConstructors ()
Constructor<?>[] getDeclaredConstructors ()
Constructor<T> getConstructor (Class<?>...parameterTypes)
Constructor<T> getDeclaredConstructor (Class<?>...parameterTypes)
Constructor类中用于创建对象的方法:
T newInstance (Object...initargs)
setAccessible (boolean flag)
*/
//1、获取class字节码文件对象
Class<?> clazz = Class.forName("Reflect_package1.Student");
//2、获取public构造方法
Constructor<?>[] cons1 = clazz.getConstructors();
for (Constructor<?> con : cons1) {
System.out.println(con);
}
System.out.println("========================");
//获取所有构造方法
Constructor<?>[] cons2 = clazz.getDeclaredConstructors();
for (Constructor<?> con : cons2) {
System.out.println(con);
}
System.out.println("========================");
//获取单个的构造方法
Constructor<?> con1 = clazz.getDeclaredConstructor();
System.out.println(con1);
System.out.println("========================");
Constructor<?> con2 = clazz.getDeclaredConstructor(String.class);
System.out.println(con2);
System.out.println("========================");
Constructor<?> con3 = clazz.getDeclaredConstructor(String.class, int.class);
System.out.println(con3);
System.out.println("========================");
//获取权限修饰符
int modifiers = con3.getModifiers();
System.out.println(modifiers);
System.out.println("========================");
//获取构造方法所有的参数
Parameter[] parameters = con3.getParameters();
for (Parameter parameter : parameters) {
System.out.println(parameter);
}
System.out.println("========================");
//创建对象
Constructor<?> con4 = clazz.getDeclaredConstructor(int.class);
con4.setAccessible(true);//暴力反射:表示临时取消权限校验
Student stu = (Student) con4.newInstance( 23);
System.out.println(stu);
}
}
|