登录

去注册 忘记密码?

登录

注册

去登录

  • 扫码关注公众号
  • 发送“我爱安卓
  • 即可获取验证码

注册

解锁回答区域

  • 扫码关注公众号
  • 发送“我爱安卓

若你登陆,将永久解锁;
若未登录,仅本机解锁。

解锁回答区域

获取注册验证码

  • 扫码关注公众号
  • 发送“我爱安卓
  • 即可获取验证码

每日一问 | 被声明为private final 的内部类,能生成一个子类对象吗?逆天篡改~

鸿洋    2022-04-15 21:13   收藏

之前小缘在群里问过这个问题:

截屏2022-02-10 下午5.27.05.png

先不考虑其实际的使用价值,单纯从技术角度思考,其实也有场景能用上,暂时不表。

我细化一下问题:

前提类:

public class A {

    private final AInner inner = new AInner();

    private final class AInner {

        public void b() {
            Log.d("tec-hack", "AInner b invoke");
        }
    }
}

注意,暂且认为该类是系统类,我们无法在编译期对齐修改。

问题来了:

  1. 如何构造一个AInner的子类对象?
  2. 完成对A的inner成员变量替换。

自助提问入口:点击提交问题

删除留言

确认删除留言,会导致相关评论丢失?

取消 确定