Java反射
概述
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
编译机制
说起反射机制,首先要了解Java 编译机制
- 静态编译:在编译时确定类型,绑定对象
- 动态编译:运行时确定类型,绑定对象
动态编译可以最大程度地支持多态,而多态最大的意义在于降低类的耦合性,反射就是动态编译。
反射优缺点
优点: 运行期类型的判断,动态加载类,提高代码灵活度。
缺点: 性能瓶颈:反射相当于一系列解释操作,通知 JVM 要做的事情,性能比直接的java代码要慢很多。
应用场景
JDBC连接
在JDBC 的操作中,如果要想进行数据库的连接,则必须按照以上的几步完成
- 通过Class.forName()加载数据库的驱动程序 (通过反射加载,前提是引入相关了Jar包)
- 通过 DriverManager 类进行数据库的连接,连接的时候要输入数据库的连接地址、用户名、密码
- 通过Connection 接口接收连接
public class ConnectionJDBC {
//驱动程序就是之前在classpath中配置的JDBC的驱动程序的JAR 包中
public static final String DBDRIVER = "com.mysql.jdbc.Driver";
//连接地址是由各个数据库生产商单独提供的,所以需要单独记住
public static final String DBURL = "jdbc:mysql://localhost:3306/test";
//连接数据库的用户名
public static final String DBUSER = "root";
//连接数据库的密码
public static final String DBPASS = "";
public static void main(String[] args) throws Exception {
//表示数据库的连接对象
Connection con = null;
//1、使用CLASS 类加载驱动程序 ,反射机制的体现
Class.forName(DBDRIVER);
//2、连接数据库
con = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
// 3、关闭数据库
con.close