笔记——java反射

一、Class类的使用

      1、万事万物皆对象(静态成员不是面向对象的,静态对象是属于类的),所以创建的每个类都是java.lang.Class类的对象,但是这些对象是不可以new的,因为java.lang.Class的构造函数是私有的;

     2、通过反射获取类类型的方法有一下三种类型(Student类):

         Class cls1 = Student.Class;        //通过类名获取

         Class cls2 = student.getClass();      //通过类对象获取

         Class cls3 = Class.forName("**.**.Student");     //通过完整的路径和类名获取

      注: Student stu = cls1.newInstance();     //Student类中必须要有无参的构造函数,否则会抛 java.lang.InstantiationException

     3、动态加载,只有运行时才会加载,编译时不加载;

二、获取方法信息

    Method[] m = obj.getMethods();       //获取类的全部public 方法,包括父类的public方法;

    Method[] m = obj.getDeclaredMethods();     //获取自己类的全部方法,不限访问权限;

    m.getName();        //获取方法名称,返回String;

    m.getReturnType();        //获取方法的返回类型,返回Class;

    m.getParameterTypes();    //获取方法的参数类型,返回Class[];

 三、获取类属性(成员变量)

    Field[] fs = obj.getFields();   //获取类的全部public 属性,包括父类的public属性;

    Field[] fs = cla.getDeclaredFields();   //获取自己类的全部属性,不限访问权限;

    fs.getName();   //获取属性名称,返回String;

    fs.getType();    //获取属性类型,返回 Class  ;     fs.getType().getName();   //获取类型名称,返回String;

四、获取构造函数

    Constructor[]   cs = obj.getConstructors();     //方法获取所有的public的构造函数

     Constructo[]  cs = obj.getDeclaredConstructor();     //获取自己的构造函数;

五、方法反射基本操作

    //方法如果没有返回值,返回null,如果有返回值返回Object类型,然后再强制类型转换为原函数的返回值类型

    m.invoke(对象,参数列表);   

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值