- 什么是反射?
简言之就是把.class文件转换为java认识的形式,通过反射机制访问类的方法,属性,和构造函数。即
1,反编译:.class-->.java
2.通过反射机制访问java对象的属性,方法,构造方法等;
- 反射机制适应场景?
创建一个对象可以通过new的形式,但有没有不通过new形式创建对象的呢?答案是反射机制,如jdbc连接数据库使用Class.forname(com.mysql.jdbc.Driver);但new的形式效率更高。因此,反射使用场 景如下:
- Jdbc 加载驱动-----
- Spring ioc
- 常用框架
- 一些注解的底层实现,生成sql语句
- 反射机制装逼代码,访问类的私有变量
public static void main(String [] args) throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException, InstantiationException {
/*
通过java反射机制访问私有成员
*/
//获取当前class类地址
//Class<?> forName=Class.forName("Entity.UserEntity");
// forName
Class<?> forName = Class.forName("Entity.UserEntity");
Field useId = forName.getDeclaredField("id");
Object obj=forName.newInstance();
//允许访问私有成员变量
useId.setAccessible(true);
useId.set(obj,"123");
UserEntity user=(UserEntity) obj;
System.out.println(user.getId());
}
本文深入解析Java反射机制,包括反编译.class文件为.java源码,通过反射访问类的属性、方法和构造函数。探讨了反射机制在JDBC、Spring IOC及框架中应用,以及如何利用反射机制访问私有变量。
2007

被折叠的 条评论
为什么被折叠?



