Java反射(2)对象方法及参数的获取

首先创建一个工具类,里面包含两个字段,以及封装好的静态工具方法,通过调用这个静态方法,可以获取传入对象的方法信息,打印在控制台。

运行效果:

 

import java.lang.reflect.Method;

public class ClassUtil {
    private int id;
    private String name;

    public ClassUtil() {
    }

    public ClassUtil(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public String getResult_1() {
        System.out.println("这是一个Public方法");
        return "这是一个Public方法";
    }

    private void getResult_2() {
        System.out.println("这是一个Private方法");
    }

    /**
     * 以上是模拟一个普通的类 下面的方法可以作为一个工具类使用
     */
    public static void getClassInfo(Object object) {
        //获取传入对象的类类型
        Class obj_class = object.getClass();
        System.out.println("类名字:" + obj_class.getName());
        //getMethods() 获取public方法数组 包括从父类继承的方法
        //obj_class.getDeclaredMethods()这个方法是获取声明的方法数组 无论是什么访问权限
        Method[] methods = obj_class.getMethods();
        //遍历方法数组
        for (int i = 0; i < methods.length; i++) {
            //getReturnType() 返回的是 返回值类的class 所以还应该加上getName()
            System.out.print("方法名:" + methods[i].getName() + " 返回值类型:" + methods[i].getReturnType().getName());
            //获取某个方法的所有参数
            Class[] cls = methods[i].getParameterTypes();
            if (cls.length != 0) {
                for (int j = 0; j < cls.length; j++) {
                    System.out.println(" 方法的参数:" + cls[j].getName());
                }
            } else {
                System.out.println(" ***该方法无参数");
            }
        }

    }

}
/**
 * 通过反射获取对象的方法以及参数
 */
public class Main {
    public static void main(String[] args) {
        Class c1 = String.class;
        System.out.println(c1.getName());
        System.out.println(c1.getSimpleName());

        ClassUtil classUtil = new ClassUtil(1, "Name");
        ClassUtil.getClassInfo(classUtil);
    }
}

 

全部评论

相关推荐

把球:这个听过,你加了就会发现是字节的hr
点赞 评论 收藏
分享
11-27 17:35
已编辑
蚌埠坦克学院 C++
深信服 后台开发 n×12
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务