android中反射的一些基本常识

本文深入探讨了反射机制在Java中的作用及风险,解释了private权限修饰符如何限制方法访问,以及反射如何为熟悉代码的开发者提供便利。同时,文章提到了隐藏代码的概念,以及在框架层开发中使用隐藏public方法的效率优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

反射的作用

1.private的作用是限制权限,防止那些不了解的人不正当错误地使用我的方法。
反射是给了解代码的人开个后门。

2.反射的风险与责任:使用反射调用私密方法的人是自己承担风险,而调用public方法出了问题是需要写这个方法的人负责的

3.隐藏代码hidden:谷歌在开发源码的时候有很多隐藏的代码,目的是为了防止应用层的开发者在不了解的情况下调用该方法、或者隐藏一些在后期不确定是否保留的一些方法。但是这些方法做framwork层开发的人会用到,他们不想用发射去调用,那样效率也低。所以有了隐藏public方法这种机制的出现。

try {
    Class utilsClass = Class.forName("com.example.hidden.Utils");
    //获取第一个构造方法
    Constructor utilsConstructor = utilsClass.getDeclaredConstructors()[0];
    //解除限制,可以使用私有构造方法
    utilsConstructor.setAccessible(true);
    Object utils = utilsConstructor.newInstance();
    Method shoutMethod = utilsClass.getDeclaredMethod("shout");
    //解除限制,可以使用私有方法
    shoutMethod.setAccessible(true);
    shoutMethod.invoke(utils);
} catch (IllegalAccessException e) {
    e.printStackTrace();
} catch (InstantiationException e) {
    e.printStackTrace();
} catch (NoSuchMethodException e) {
    e.printStackTrace();
} catch (InvocationTargetException e) {
    e.printStackTrace();
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}
package com.example;

class Utils {
    Utils(){}
    void shout(){
        System.out.println("I`m shouting!");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值