Download Reflect_project/Reflect_module/src/Reflect_package1/Reflect_demo2.java from zxy0307/Java: direct link, hf CLI and curl.
- Browser
- Download file 2.71 kB
-
https://huggingface.co/zxy0307/Java/resolve/main/Reflect_project/Reflect_module/src/Reflect_package1/Reflect_demo2.java
- Command line
-
hf download hf://zxy0307/Java/Reflect_project/Reflect_module/src/Reflect_package1/Reflect_demo2.java
-
curl -L -o Reflect_demo2.java https://huggingface.co/zxy0307/Java/resolve/main/Reflect_project/Reflect_module/src/Reflect_package1/Reflect_demo2.java
2.71 kB
| 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); | |
| } | |
| } | |