android琐事录
Posted 一介闲休
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android琐事录相关的知识,希望对你有一定的参考价值。
1.修改java类的final属性,使其可以继承
如:final class A
现在如果想让A能被B继承,注意A是第三方jar中的,你不能修改源码,此时可以这样处理:
Class aClass = A.class;
Class classClass = Class.class;
Field accessFlagsFiled = classClass.getDeclaredField("accessFlags");
accessFlagsFiled.setAccessible(true);
int accessFlags = (Integer) accessFlagsFiled.get(aClass);
accessFlags = accessFlags & (~Modifier.FINAL);
accessFlagsFiled.set(aClass, accessFlags);
2.如果想第三方@hide了A类怎么办,假设A又是系统类,但是B又要继承A,此时可以在本地创建个A,根据双亲委派模式原则,A是不会被访问到的,因为每次load A时都用的是系统A。
3.使用反射时,如果你现在有A中内部类B的实例,需要通过反射得到A对象,可以使用this.$0来获取
Field aField = bIns.getClass().getDeclaredField("this$0"); A a = aField.get(bIns);
以上是关于android琐事录的主要内容,如果未能解决你的问题,请参考以下文章