JAVA基础必备(十三)——反射(二)
来源:互联网 发布:pad的壁纸软件 编辑:程序博客网 时间:2024/05/18 13:06
对于反射,我的理解它就是一个小偷,把人家的私有财产偷出来自己来用而已。
1.反射的机制:
反射的机制其实就是在程序运行的时候能够获取自身的信息。也就是在java中,给定一个类,那么我就可以通过反射机制获取这个类的所有信息,也就是说可以获取这个类的所有的属性和方法。
2.反射的作用:
其作用就是在程序运行的过程中,可以构造出任何一个类的对象,可以调用任意一个类对象的属性和方法,生成动态代理的作用。java程序可以在运行中加载一个得知名称的class,从而获悉其完整的构造(当中不包括methods的定义),并生成其class对象实体,或其对fields设值,或调用methods方法。reflect!
3.反射的用法:
现在有很多的开源框架都会用到反射机制,在jdbc中获取其jdbc驱动的对象实例:Class.forName("com.mysql.jdbc.Driver.class").newInstance();其实这一句就是获取jdbc驱动的对象,那么为什么不用new出个对象呢?主要原因是因为:两者的创建对象的方式不同,Class.forName("com.mysql.jdbc.Driver.class")是加载驱动,也就是告诉jvm说我要加载这个类了,为类加载机制生成对象,Class在调用forName()的类加载静态方法时是分成两部完成的,即先加载类,再生成对象。而new是创建一个新的对象,不具备灵活性,例如:在配置文件中配置数据库的时候,我们可以直接用反射机制来获取该驱动的加载,当数据库改变的时候就不用动程序就可以了,而new就需要修改程序了。不符合软件的设计思想的。
4.反射的优点和缺点:
优点:具有很高的灵活性,体现在可以动态的创建对象和编译。如:更新软件,不可能让客户全卸载吧,这时候就可以用反射来完成软件的更新操作。
缺点:什么东西都不是完美的,用反射的机制就需要牺牲性能了。
5.反射具体的可以知道哪些信息:
说白了,一个类中有多少信息,利用反射机制就能够知道多少信息,但前提你得知道这个类的名称啊。
首先呢,得根据传入的这个类的名称来获取其实例对象:Class c = Class.forName(类的所在包即类名称); //加载类,Object obj = c.newInstance();//创建对象 ,对象有了,那么我就可以想要什么就要什么咯:1.可获取构造函数方法:Constructor constructor = c.getConstructor(String name,Class[] params); //根据指定参数获取public构造器,
Constructor[] constructor = c.getConstructors();//获取所有的public构造器,Constructor constructor = c.getDeclaredConstructor(Class[] params);//根据指定的参数获取public和非public的构造器。 Constructor constructor = c.getDeclaredConstructors();//获取public所有的构造器 。
同理:获得方法,Method method = c.getMethods();获得属性:Fields;
6.反射能干什么:
jdbc操作数据库,只需要写一个Dao类包含增删改查方法就可以用反射传入不同的对象就可以了。
7.数据库的操作:
增,查数据库的表操作基本原理:保存数据时,把需要保存的对象的属性值全部取出来拼成Sql语句,查询时,查询到的数据包装成对象。
- JAVA基础必备(十三)——反射(二)
- JAVA基础必备(十二)—— 反射(一)
- Java基础必备(七)——数组(二)
- JAVA基础必备(二)——数据类型
- JAVA基础必备(四)——循环体(二)
- Java基础(十三)-----JDBC(二)
- Java反射基础(二)— Class类
- 机器学习基础(二十三)—— 概念、定义
- JSP基础(二十三)——函数标签
- Java反射基础 入门(二)
- java基础巩固之反射(二)
- java基础整理二十三(网络编程)
- Java基础之反射(二):反射应用
- JAVA基础 (二)反射 深入解析反射机制
- 网络工程师必备基础(二)
- (十三)、Java复习笔记之反射
- JAVA基础必备(一)——JAVA环境
- Java基础——反射(待续)
- linux下的shell 快捷键
- 农夫过河问题
- magento的var目录内容跑到/tmp/magento/var下解决
- 互联网术语
- 十大免费DNS域名解析服务-稳定,可靠,好用的免费DNS服务
- JAVA基础必备(十三)——反射(二)
- 韩顺平PHP学习视频笔记整理028apache服务器使用及配置③ apache虚拟目录
- schedule_delayed_work()
- hdu 2716 字符的转换
- QT 自动获取可用串口
- XIB的使用
- Express安装提示:'express' 不是内部或外部命令,也不是可运行的程序或批处理文件。
- 基于Krpano 的全景漫游系统的实现
- easyui 扩展tree 为 ztree(id, pid)的扁平数据结构集