反射的基本使用

 

 反射

       类是具有相同属性或者行为的一类事物,那么类本来也可以再被抽象,因为类们也有共同的

 属性和行为,比如都有属性、构造器、方法,所以把类们又抽象成了一个类Class.


 得到Class类的对象

1.通过Class.forName(类的全路径);

 2.通过类的名字打点,如User.class;

 3.通过该类的对象调用getClass()方法。

 

  Field 类  类属性的抽象

 Method 类  类方法属性的抽象

 Constructor类  类构造器的抽象



    Class clazz = Class.forName("com.reflect.User");

    //获得类的所有属性

    Field[] fields = clazz.getDeclaredFields();

    //获得类的所有public属性

    Field[] publicField = clazz.getFields();

    //通过类的一个特定属性

    Field field = clazz.getDeclaredField("name");


    //获得类的所有方法

    Method[] methods = clazz.getDeclaredMethods();

    //获得类的一个具体方法

    Method method = clazz.getDeclaredMethod("setName");


    //获得类的构造器(参数为类构造函数的参数的类型的Class数组,如Integer.class)

    Constructor constructor = clazz.getDeclaredConstructor(new Class[]{});

    //根据类的默认构造器来获得一个对象(参数为值的数组)

    Object instance = constructor.newInstance(new Object[]{});


    //调用类的方法

    method.setAccessible(true);   //调用私有方法需要

    method.invoke(instance,"李四");


    //设置类的属性

    field.setAccessible(true);   //设置私有属性需要

    field.set(instance,"张三");

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值