网站首页 > 精选教程 正文
Java的反射功能,可以帮我们在程序“运行期间““自由的”创建对象,那为什么强调运行期间呢?那是因为我们创建对象一般是在编译期间就创建好了,例如:我们在代码中new了一个对象,这个时候java源码文件转换成字节码文件后,对象就创建好了,只不过是在JVM上跑的时候,加载进来而已
那自由体现在哪里呢?自由体现在我们加载某个对象时不再用去像new这样去硬编码了,我们可以通过Class.ForName("类路经").newInstance方法,构造出这个对象,而这个类路经我们可以通过加载配置文件或者从数据库中获取的方式拿到,这样我们就不用通过改代码的方式,加载不同的对象了
Java的反射功能在java.lang.reflect包中,Class类是reflect包中一个重要类的,用于表示对象的类型标识,JVM会为每一个Java对象,创建一个这样的类,通过这个类,我们可以获取对象所属类的成员变量,对java对象的属性进行动态修改,例如Field[] f=具体类.getDeclaredFields();f[0].set("具体值")
正是由于java的反射功能可以让我们在运行期间灵活的创建对象,那么创建对象与使用对象的解耦,及创建平台型框架就成为了可能,例如我们现在常用的Spring框架在加载对象时都采用了反射,例如我们编写spring bean的配置文件,在里面罗列了类的全路径名,那么在spring项目启动时,加载这配置文件,读取里面类的全路径名,然后利用java反射生成实例对象,放到IOC容器(其实就是一个hashmap)里面
Java进行反射的前提是存在相应的class字节码文件,如果没有class文件只有源码文件也是可以动态加载的,这个就要通过java.tools包里的Compiler类的run方法了,这是JDK6推出的方法,例如我们见到一些在线编程环境,就采用了这样的技术
猜你喜欢
- 2024-11-13 十年Java工程师写下的Java反射使用总结
- 2024-11-13 一起来了解Java中的反射 java反射的步骤原理
- 2024-11-13 Java基础:反射机制,你用得多吗 java反射机制有什么用
- 2024-11-13 每日一点涨薪小知识-JAVA反射 java反射的理解
- 2024-11-13 不是吧,还有人连Java最强大的技术之一:反射还没搞懂?赶紧码住
- 2024-11-13 Java反射的原理以及应用场景 java中反射的实际用法
- 2024-11-13 浅谈java中的反射(恭喜FPX) java里的反射是什么
- 2024-11-13 实操讲解Java的反射机制,你要是再看不懂,神仙都没救了
- 2024-11-13 两分钟学会Java反射 java 反射
- 2024-11-13 三石说:java基础 之 反射 java反射的基石
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)