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

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

相关文章
|
4月前
|
安全 Java
Java反射-Class对象功能概述及反射案例
Java反射-Class对象功能概述及反射案例
40 1
|
8月前
|
设计模式 Java
Java反射(Class、反射实例化、反射与单例、获取类结构)附带相关面试题
1.了解反射,2.Class类的三种实例化方法,3.反射机制与对象实例化,4.反射与单例设计模式,5.通过反射获取类结构的信息
204 0
|
3月前
|
监控 安全 Java
Java反射:深入了解动态类操作
Java反射:深入了解动态类操作
70 0
|
8月前
|
设计模式 Java 安全
Java中包的作用以及使用、访问权限、单例/多例设计模式、枚举和异常(附带相关面试题)
本章节讲述以下方面知识点 1.包的作用以及使用 2.单例/多例化设计模式 3.枚举 4.访问权限2.异常
54 0
Java中包的作用以及使用、访问权限、单例/多例设计模式、枚举和异常(附带相关面试题)
|
11月前
|
安全 Java 程序员
魔法反射--java反射初入门(基础篇)
反射被应用于许多方面, spring的注解, jdbc的连接都是基于反射来实现的, 可能在工作中我们很少能用到反射, 但是在面试的过程中面试官经常会问道, 可以不用反射, 但作为一个程序猿, 还是应该了解了解的
67 0
|
前端开发 编译器 容器
|
Java
Java面向对象(1)--对象的创建使用类的实例化
Java面向对象(1)--对象的创建使用类的实例化
65 1
|
Java API
Java反射(四)反射获取类的结构信息
介绍了Constructor Method Field Class的API
99 0
Java反射->什么是反射?->获取方式
Java反射->什么是反射?->获取方式
Java反射->什么是反射?->获取方式
|
网络协议 测试技术 Go
反射的注意事项和细节(2) | 学习笔记
快速学习反射的注意事项和细节(2)
62 0