Download Reflect_project/Reflect_module/src/Reflect_package1/Reflect_demo4.java from zxy0307/Java: direct link, hf CLI and curl.
- Browser
- Download file 3.38 kB
-
https://huggingface.co/zxy0307/Java/resolve/main/Reflect_project/Reflect_module/src/Reflect_package1/Reflect_demo4.java
- Command line
-
hf download hf://zxy0307/Java/Reflect_project/Reflect_module/src/Reflect_package1/Reflect_demo4.java
-
curl -L -o Reflect_demo4.java https://huggingface.co/zxy0307/Java/resolve/main/Reflect_project/Reflect_module/src/Reflect_package1/Reflect_demo4.java
3.38 kB
| package Reflect_package1; | |
| import java.lang.reflect.InvocationTargetException; | |
| import java.lang.reflect.Method; | |
| import java.lang.reflect.Parameter; | |
| public class Reflect_demo4 { | |
| public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException { | |
| /* | |
| Class类中用于获取成员方法的方法: | |
| Method[] getMethods ():返回所有公共成员方法对象的数组,包括继承的 | |
| Method[] getDeclaredMethods ():返回所有成员方法对象的数组,不包括继承的 | |
| Method getMethod (String name, Class<?>...parameterTypes):返回单个公共成员方法对象 | |
| Method getDeclaredMethod (String name, Class<?>...parameterTypes):返回单个成员方法对象 | |
| Method类中用于创建对象的方法 | |
| Object invoke (Object obj, Object...args) 运行方法 | |
| 参数一:用obj对象调用该方法 | |
| 参数二:调用方法的传递参数(如果没有就不写) | |
| 返回值:方法的返回值(如果没有就不写) | |
| */ | |
| //1、获取class字节码文件对象 | |
| Class<?> clazz = Class.forName("Reflect_package1.Student"); | |
| //2、获取里面所有的方法对象 | |
| Method[] methods1 = clazz.getMethods(); | |
| for (Method method : methods1) { | |
| System.out.println(method); | |
| } | |
| System.out.println("====================="); | |
| //3、获取里面所有的方法对象(不能获取父类的,但是可以获取本类私有的方法) | |
| Method[] methods2 = clazz.getDeclaredMethods(); | |
| for (Method method : methods2) { | |
| System.out.println(method); | |
| } | |
| System.out.println("====================="); | |
| //4、获取单一的公共成员方法 | |
| Method m = clazz.getMethod("sleep"); | |
| System.out.println(m); | |
| System.out.println("====================="); | |
| //5、获取单一的成员方法 | |
| Method e = clazz.getDeclaredMethod("eat", String.class); | |
| System.out.println(e); | |
| System.out.println("====================="); | |
| //6、获取方法的修饰符 | |
| int modifiers = m.getModifiers(); | |
| System.out.println(modifiers); | |
| //获取方法的名字 | |
| String name = m.getName(); | |
| System.out.println(name); | |
| //获取方法的形参 | |
| Parameter[] parameters = e.getParameters(); | |
| for (Parameter parameter : parameters) { | |
| System.out.println(parameter); | |
| } | |
| System.out.println("====================="); | |
| //7、获取方法抛出的异常 | |
| Class<?>[] exceptionTypes = m.getExceptionTypes(); | |
| for (Class<?> exceptionType : exceptionTypes) { | |
| System.out.println(exceptionType); | |
| } | |
| //方法运行 | |
| // Object invoke (Object obj, Object...args) 运行方法 | |
| // 参数一:用obj对象调用该方法 | |
| // 参数二:调用方法的传递参数(如果没有就不写) | |
| // 返回值:方法的返回值(如果没有就不写) | |
| Student s = new Student(); | |
| e.setAccessible(true);//忽略权限 | |
| Object result = e.invoke(s, "汉堡包"); | |
| System.out.println(result); | |
| } | |
| } | |