Java反射机制如何获取类结构,如何获取父类,如何获取类实现的全部接口,如何获取全部构造方法及全部方法和全部属性,以及通过反射调用类中的方法

1.反射机制

即通过实例化对象获取所属类的信息。

2.如何获取类结构

(1)Constructor类

获取类中的构造方法

(2)Field类

获取类中的属性

(3)Method类

获取类中的方法

3.如何获取父类

 c=Class.forName("edu.day1.BookReading");//Class对象
Class<?> c1=c.getSuperclass();
        System.out.println("获取父类的名称:"+c.getSuperclass());

请添加图片描述
请添加图片描述

4.如何获取类实现的全部接口

 c=Class.forName("edu.day1.BookReading");//Class对象
 Class<?> w[]=c.getInterfaces();//获取接口的方法
        for (int i=0;i<w.length;i++)
        System.out.println("实现的接口名称:"+w[i].getName());

5.如何获取类全部构造方法及相关信息

定义了几个构造方法,就返回几个构造方法的信息

 c=Class.forName("edu.day1.BookReading");//Class对象
Constructor<?> constructor[] =null;//此处获得对象数组
        constructor=c.getConstructors();//获取BookReading类的全部构造方法
        for(int i=0;i<constructor.length;i++){
            //获取构造方法参数信息
            Class<?> p[]=constructor[i].getParameterTypes();
            //获取构造方法权限
            System.out.print("构造方法权限:"+constructor[i].getModifiers()+" ");
            //获取构造方法名称
            System.out.print(constructor[i].getName()+"(");
            //打印参数信息
            for(int j=0;j<p.length;j++){
                System.out.print(p[j].getName()+" ");
                if(j<p.length-1){
                    System.out.print(",");
                }
            }
            System.out.print(")");
        }

请添加图片描述

6.如何获取类全部方法

Method method[]=c.getMethods();
        for(int i=0;i<method.length;i++){
            //获取返回值类型
            Class<?> turn=method[i].getReturnType();
            //获取参数类型
            Class<?> para[]=method[i].getParameterTypes();
            //获取修饰符权限
            int limit=method[i].getModifiers();
            //还原修饰符权限
            System.out.println("修饰符权限为:"+ Modifier.toString(limit));
            //获取方法抛出异常
            Class<?> abnormal[]=method[i].getExceptionTypes();
            if(abnormal.length>0){
                System.out.println("异常为:");
            }
            for(int j=0;j<abnormal.length;j++){
                System.out.println(abnormal[j].getName());
                if(j<abnormal.length-1)
                    System.out.println(",");
            }
        }

请添加图片描述

7.如何获取类全部属性

(1)getFields()可以获取类,及实现的接口或继承的父类的公有属性
如:
Field f[]=c.getFields();2getDeclaredFields()获取类中全部属性包括私有属性

8.如何通过反射调用类中方法

 c=Class.forName("edu.day1.BookReading");//Class对象
 Method method=c.getMethod("类名");
 method.invoke(c.newInstance);
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梅花与竹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值