反射机制是什么?
来源:互联网 发布:淘宝手机助手登陆失败 编辑:程序博客网 时间:2024/06/07 11:12
反射机制是什么?
一直都知道反射很重要,但是反射就是不知道什么时候用,那是因为对反射理解的不够。
以下是我对反射机制的几个理解,也方便大家去理解。
1.反射机制:就是在程序运行的时候可以检查你所引用对象的切确类型,从而使你可以根据不同的类型
,做出不一样的动作.为什么需要这样的一个机制呢?看一个例子,多态性决定了我们可以通过一个
盛装父类的容器存放对应子类的类型,但是,不同的子类有各自的实现办法。当你对该容器的所有对象
进行共有方法的调用时,你会发现每一个对象都能正确的调用。这里面其实就涉及到了反射机制。
2.Class对象:世间万物都是对象。那么好,当你新建了一个类(注意不是一个类的实例)的时候,
这个类是不是对象呢?肯定是的啦。既然是对象,那么就会有属性,方法。如何获取呢?
我们可以通过反射获得你感兴趣的对象的Class类型信息。然后一切就柳暗花明又一村了。
3.jvm是如何保存类型对象的信息的?其实在我们第一次运行类的时候,都会生成一个后缀为.class的字节码文件,
在以后的调用中,类的加载器就是靠着这个文件来判断你需要的对象是否存在,如果存在的话还要验证是否正确。
之后他就知道了每个对象的类型信息了。
4.有时候我们调试会发现,如果类里面有静态成员变量的时候,都是先调用了这个成员变量(因为预加载到内存)
再进行构造函数的调用的。也侧面说明了我们经常使用的构造函数其实是个静态方法,没有static修饰是因为类的
加载器知道它是静态的,所以不用你指定,也不能让你指定(社会总是有一套规章制度的嘛,不然就乱套了)。
5.获取Class的方法。简单粗暴的比如你在包com.hy.test下定义了一个person类,那么你可以通过三种方法获取
(Class.forName(com.hy.test.person)||(new person()).getClass()||person.class)。哈哈,你是不是发现什么了?
我person里边没有class这个属性啊,哪来的?原因在于每个类其实归根到底都是继承者object,那自然都是从这里来的了。
注意基本的数据类型虽然不是继承自object但是它也有class属性。反射获取到的是对应的包装类。建议使用最后一种方法,因为
他能够在编译阶段发现错误,不用捕获异常,最重要的是他的加载方式和前边两种是不一样的,最后一种的方法性能要高效。
- 反射机制是什么?
- JAVA反射机制作用是什么
- JAVA反射机制作用是什么
- JAVA反射机制作用是什么
- JAVA反射机制作用是什么
- JAVA反射机制作用是什么 .
- JAVA反射机制作用是什么
- JAVA反射机制作用是什么
- JAVA反射机制作用是什么
- java反射机制到底是什么?
- Java反射机制作用是什么
- JAVA反射机制作用是什么
- Java反射机制的作用是什么
- JAVA反射机制的作用是什么
- Java反射机制--是什么,为什么,怎么用。
- Java反射机制--是什么,为什么,怎么用。
- 反射机制
- 反射机制
- Android——httpPost方式网络互通信
- 蓝牙知识点
- 光照亮度调整(图像拼接之前)
- UI之把一个控件在屏幕内做任意拖拽并得到时时坐标
- 深刻理解Python中的元类(metaclass)
- 反射机制是什么?
- 杭电acm1398
- 牛客网 | 把二叉树打印成多行
- Python的爬虫框架 Scrapy
- Codeforces Round 580 D. Kefa and Dishes (状态压缩dp)
- sql server中,N''表示什么意思?
- Android之可伸缩的皮筋效果(贝塞尔曲线)的介绍
- 判别分析
- Android图片加载框架比较----Glide,Picasso,Fresco