反射中常用的技巧总结

反射技术主要是是对类中成员属性、构造方法、成员方法的获取和调用

1、如果想获取3者中公开(public)的XX,我们使用普通的方法即可,但是一旦我们想要获取3者中被其他访问修饰符修饰的XX,我们就要使用被"Declared"修饰的方法,比如【getDeclaredField、getDeclaredConstructor。。。】

2、如果说,我们已经获取到私有的XX,在使用时会报IllegalAccessException异常,是因为我们虽然获取了私有的XX,但是在使用时JVM虚拟机仍然会检查我们的访问修饰符,此时   构造方法/成员属性.setAccessible(true);放开权限,不让JVM虚拟机进行检查

3、获取成员方法后的赋值操作(2种情况:(1)有参数  (2)有返回值)

(1)有参数:参数中直接跟上方法名,再者,参数类型的class类型

(2)有返回值:有返回值后面我们就要得到它的返回值(Object类型),并且使用invoke()方法


    public void show() {
        System.out.println("show");
    }

    public String method(String name,int age) {
        return name+"******" + age;
    }

public static void main(String[] args) throws Exception{
        Class clazz = Class.forName("com.qsw.reflect.Person");
        //使用字节码文件对象获取构造方法用来构造对象
        Constructor con = clazz.getConstructor();
        Object object = con.newInstance();
        //使用字节码文件对象获取成员方法()
        Method showMethod = clazz.getMethod("show");
        showMethod.invoke(object);
        System.out.println(object);
        
        //通过反射获取带参带返回值的成员方法,有返回值的情况下我们要用Object类型接收才行
        Method methodMethod = clazz.getMethod("method", String.class,int.class);
        Object object2 = methodMethod.invoke(object, "林青霞",68);
        System.out.println(object2);
        
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值