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

简介: 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反射机制详解

相关文章
|
6月前
|
设计模式 缓存 编译器
【C++ 元对象系统03】深入探索Qt反射:从原理到实践
【C++ 元对象系统03】深入探索Qt反射:从原理到实践
281 5
|
6月前
|
安全 Java
Java反射-Class对象功能概述及反射案例
Java反射-Class对象功能概述及反射案例
71 1
|
设计模式 Java
Java反射(Class、反射实例化、反射与单例、获取类结构)附带相关面试题
1.了解反射,2.Class类的三种实例化方法,3.反射机制与对象实例化,4.反射与单例设计模式,5.通过反射获取类结构的信息
304 0
|
6月前
|
Java
【专栏】Java反射机制,该机制允许程序在运行时获取类信息、动态创建对象、调用方法和访问属性
【4月更文挑战第27天】本文探讨了Java反射机制,该机制允许程序在运行时获取类信息、动态创建对象、调用方法和访问属性。反射通过Class、Constructor、Method和Field类实现。文中列举了反射的应用场景,如动态创建对象、调用方法、访问属性和处理注解,并提供了相关实例代码演示。
78 4
|
6月前
|
监控 安全 Java
Java反射:深入了解动态类操作
Java反射:深入了解动态类操作
124 0
|
安全 Java 程序员
魔法反射--java反射初入门(基础篇)
反射被应用于许多方面, spring的注解, jdbc的连接都是基于反射来实现的, 可能在工作中我们很少能用到反射, 但是在面试的过程中面试官经常会问道, 可以不用反射, 但作为一个程序猿, 还是应该了解了解的
100 0
|
前端开发 编译器 容器
Java反射->什么是反射?->获取方式
Java反射->什么是反射?->获取方式
Java反射->什么是反射?->获取方式
|
Java API
Java反射(四)反射获取类的结构信息
介绍了Constructor Method Field Class的API
122 0
|
网络协议 测试技术 Go
反射的注意事项和细节(1) | 学习笔记
快速学习反射的注意事项和细节(1)