最近阅读了LayoutInflater的源码,它的inflate()方法使用XmlParser将xml文件解析,并创建View实例。创建View实例时使用了反射:代码(也就是dalvick虚拟机)只知道View的类的名字(String),需要创建View的实例。
之前读Java编程思想的反射部分有一些疑问:
1.需要创建类的实例,使用A a = new A();就可以了,为什么Java有反射机制?
A a = new A(); 是code通过代码创建对象,
Java反射机制是允许代码自己去创建对象(只知道类名)。
2.Java是面向对象的语言,类的行为都被封装成方法,为何要通过反射暴露出来?
创建实例并使用
3.反射获取的Method实质是什么?
函数指针
4.反射为何效率比较低
jvm执行普通的字节码可以进行虚拟机优化,效率比较高;
反射并不能进行虚拟机优化,导致效率低。
不知道这些理解是否合适?
关于反射的个人理解
最新推荐文章于 2024-11-11 08:40:14 发布