黑马程序员——反射
来源:互联网 发布:ubuntu安装下载语言包 编辑:程序博客网 时间:2024/06/13 16:24
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
反射:就是通过class文件对象,去使用该文件中的成员变量,构造方法,成员方法。
1、所有的类文件都有共同属性,所以可以向上抽取,把这些共性内容封装成一个类,这个类就叫Class(描述字节码文件的对象)。
Class类中就包含属性有field(字段)、method(方法)、construction(构造函数)。
2、Class和class的区别
1)class:Java中的类,用于描述一类事物的属性和方法。
2)Class:Class是Java程序中各个Java类的总称;它是反射的基石,通过Class类来使用反射。
3、获取Class对象的三种方式
加载XX.class文件进内存时就被封装成了对象,该对象就是字节码文件对象。如何获取Class对象呢?
方式一:
通过对象的getClass方法进行获取。
如:Class clazz=new Person().getClass();//Person是一个类名
麻烦之处:每次都需要具体的类和该类的对象,以及调用getClass方法。
package Reflect; /** * 通过一个对象获得完整的包名和类名 * */class Demo{ //other codes...} class hello{ public static void main(String[] args) { Demo demo=new Demo(); System.out.println(demo.getClass().getName()); }}
方式二:
任何数据类型都具备着一个静态的属性class,这个属性直接获取到该类型的对应Class对象。
如:Class clazz=Person.class;//Person是一个类名
比第一种较为简单,不用创建对象,不用调用getClass方法,但是还是要使用具体的类,和该类中的一个静态属性class完成。
package Reflect; /** * 通过一个对象获得完整的包名和类名 * */class Demo{ //other codes...} class hello{ public static void main(String[] args) { Class clazz = Demo.class; System.out.println(clazz.getName()); }}
方式三:
这种方式较为简单,只要知道类的名称即可。不需要使用该类,也不需要去调用具体的属性和行为。就可以获取到Class对象了。
如:Class clazz=Class.forName("包名.Person");//Person是一个类名
这种方式仅知道类名就可以获取到该类字节码对象的方式,更有利于扩展。
package Reflect; /** * 通过一个对象获得完整的包名和类名 * */class Demo{ //other codes...} class hello{ public static void main(String[] args) { Class clazz = Class.forName("Reflext.Demo"); System.out.println(clazz.getName()); }}
0 0
- 黑马程序员—反射
- 黑马程序员—反射
- 黑马程序员—反射
- 黑马程序员—反射
- 黑马程序员—反射
- 黑马程序员—反射
- 黑马程序员—反射
- 黑马程序员—反射
- 黑马程序员——反射
- 黑马程序员——反射
- 黑马程序员——反射
- 黑马程序员——反射
- 黑马程序员——反射
- 黑马程序员——反射
- 黑马程序员——反射
- 黑马程序员——反射
- 黑马程序员——反射
- 黑马程序员——反射
- WebService部署到IIS上
- touch的双击唤醒如何实现
- mysql 导出导入数据库以及函数、存储过程
- echart 点击事件
- edgesForExtendedLayout对子vc的view的影响
- 黑马程序员——反射
- php中file_get_contents与curl性能比较分析
- 【转载】将思维导图上传到博客的好方法
- arm linux 启动流程分析
- Android中类ListPreference使用介绍
- Java 大作业回忆--day07-- 我们的作品完成啦
- 阿里云服务器安装mysql数据库
- 分布式系统全链路监控方案设计
- 记一次Android下载过程的内存优化