(十八) 反射的原理是什么,反射创建类实例的三种方式是什么?

简介: javac在这一阶段会把java代码编译为class文件,保存在硬盘中,这个文件中保存着这个类的类名、成员名、构造方法、其他方法等。

微信搜索《Java鱼仔》,每天一个知识点不错过

(一)每天一个知识点


反射的原理,反射创建类实例的三种方式是什么?


(二)回答


2.1 什么是反射


一段Java代码在计算机中的运行过程分为以下三个过程:


1.Source阶段:


javac在这一阶段会把java代码编译为class文件,保存在硬盘中,这个文件中保存着这个类的类名、成员名、构造方法、其他方法等。


2.Class阶段


Class阶段会把class字节码文件中的信息转化成class类对象,比如成员变量用Field[]保存,构造方法用Constructor[]保存,成员方法用Method[]保存。


3.Runtime阶段


在代码中通过new方法,根据第二个阶段的class对象创建出实际的对象。


这里的第二个阶段,将类的各个组成部分封装为其他对象就是反射机制。


2.2 反射创建类实例的三种方式是什么


获取Class对象有三种方式,分别对应于前面的三个阶段:


1.对应于第一个阶段的方法是将字节码文件加载进内存中:


class.forname("全类名");

2.第二个阶段已经生成了class类对象,因此方法如下:


类名.class;

3.第三个阶段生成了对象,方法如下:


对象.getclass();

注意: 同一个字节码文件(.class)在一次程序运行过程中只会被加载一次,通过以上三种方法创建的class对象是同一个。


关于反射机制,我专门写了一篇博客:


java核心基础之java反射机制详解

相关文章
|
监控 Java Linux
JVM调优
JVM调优
441 0
|
9月前
|
前端开发 安全 Java
2025春招,Spring 面试题汇总
本文详细整理了2025年春招必备的Spring面试题,分为基础和高级两大部分,帮助求职者全面掌握Spring相关知识点,结合实际项目经验,提升面试成功率。内容涉及Spring框架、AOP、事务管理、数据库集成、Spring Boot、Spring Security、微服务架构等,助力你在春招中脱颖而出。
1648 0
|
11月前
|
存储 缓存 安全
ConcurrentHashMap的实现原理,非常详细,一文吃透!
本文详细解析了ConcurrentHashMap的实现原理,深入探讨了分段锁、CAS操作和红黑树等关键技术,帮助全面理解ConcurrentHashMap的并发机制。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
ConcurrentHashMap的实现原理,非常详细,一文吃透!
|
XML 存储 数据库
如何使用Android Studio创建一个基本的音乐播放器应用
如何使用Android Studio创建一个基本的音乐播放器应用
642 0
|
12月前
|
安全 Java
Arraylist 和 Vector 的区别
【10月更文挑战第13天】总的来说,Arraylist 和 Vector 各有其特点和优势,我们需要根据具体的应用场景和需求来选择使用哪种集合。在实际应用中,还需要注意线程安全问题、性能优化等方面,以确保集合的正确使用和高效运行。
|
消息中间件 存储 大数据
聊一聊几款主流消息队列之间的差异,我们应该如何选择
聊一聊几款主流消息队列之间的差异,我们应该如何选择
763 2
|
人工智能 数据可视化 语音技术
语音识别与处理:Python 应用
语音识别与处理是计算机科学和人工智能领域中的重要研究方向,它的目标是让计算机能够理解和处理人类的语音。Python 提供了许多强大的库和工具,使得语音识别与处理变得更加容易。在本文中,我们将介绍一些常用的 Python 库,并通过一个简单的示例来演示如何使用它们进行语音识别与处理。
|
Kubernetes Java 数据库
GitHub置顶神作开源!世界名著《Spring实战(第6版)》全彩文档
今天给大家带来的是:[美] 克雷格·沃斯(Craig Walls) 著,张卫滨,吴国浩 译的 《Spring实战(第6版)》,也是最新的一版,本书是关于Spring核心特性的指南,延续了前几个版本一贯的清晰风格,带领你亲自动手,逐步构建出一个以数据库作为支撑的Web应用。
|
SQL 监控 关系型数据库
MySQL慢查询日志配置指南:发现性能瓶颈,提升数据库效率
MySQL慢查询日志配置指南:发现性能瓶颈,提升数据库效率
1513 0
阿里云认证证书
阿里云认证证书为什么不是自己的名字,怎么解决
839 1