Java反射机制:调用同一个包中类的所有公开无参方法

本文将介绍如何使用Java反射机制调用与当前类在同一个包下的所有类的公开无参方法。

代码示例javapackage reflext;

import java.io.File;import java.lang.reflect.Method;import java.lang.reflect.Modifier;import java.util.Arrays;

public class Test4 { public static void main(String[] args) throws Exception { String packName = Test4.class.getPackage().getName();

    // 获取当前类所在包的路径        File file = new File(Test3.class.getResource('.').toURI());        System.out.println(file);

    // 获取包下所有.class文件        File[] data = file.listFiles(f -> f.getName().endsWith('.class'));        System.out.println(Arrays.toString(data));

    // 遍历所有.class文件        for (File e : data) {            String fileName = e.getName();            String className = fileName.replace('.class', '');

        // 加载类            Class cls = Class.forName(packName + '.' + className);            Object obj = cls.newInstance();

        // 获取所有声明的方法            Method[] methods = cls.getDeclaredMethods();            for (Method method : methods) {                System.out.println('方法:' + method.getName());

            // 获取方法的参数个数                int count = method.getParameterCount();                System.out.println('参数个数:' + count);

            // 获取方法的访问修饰符                int modifier = method.getModifiers();                if (modifier == Modifier.PUBLIC && count == 0) {                    System.out.println(method.getName() + '是一个公开无参方法');                    // 调用无参方法                    method.invoke(obj, null);                    System.out.println(obj);                } else {                    System.out.println(method.getName() + '不是一个公开无参方法!!!!');                }            }        }    }}

异常处理

如果遇到java.lang.IllegalArgumentException: wrong number of arguments异常,说明在调用method.invoke()方法时传递的参数数量不正确。由于我们要调用的是无参方法,因此需要将method.invoke(obj);改为method.invoke(obj, null);

总结

本文介绍了如何使用Java反射机制调用同一个包中其他类的所有公开无参方法,并提供了代码示例和异常处理方法。希望对您有所帮助。

Java反射机制:调用同一个包中类的所有公开无参方法

原文地址: https://www.cveoy.top/t/topic/m3I 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录