美文网首页互联网科技Java 杂谈Java
Java反射——Web学习的灵魂!

Java反射——Web学习的灵魂!

作者: java菲菲 | 来源:发表于2019-07-24 15:39 被阅读2次

我们从最初的 javac -HelloWorld.java,到面向对象部分,我们可以将Java代码在计算机中经历的阶段分为三部分:Scource源代码阶段 —— Class类对象阶段 —— Runtime运行时阶段 而我们知道,Java中一个类在源代码阶段,是存储在硬盘中的,而编译后,就已经被加载到内存中区,那么有没有一种方法可以在这种情况下,获取或者修改它的方法或者属性呢?这就是我们今天所讲的Java反射机制

01 概述以及好处

(1) 概述

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制

我们将类分为三部分,成员变量,构造方法,成员方法,代码编译后,变成了字节码文件(.class文件)而万物皆对象,所以在字节码文件中,又将这三部分分别整合成对象,所以我们得出结论:

反射:将类的各个组成部分封装成对象,并通过这个Class类型的对象,去使用该文件中的成员变量,构造方法,成员方法

(2) 好处

① 可以在程序“运行时”,对 .class文件进行操作,并且由此获取以及操作 类中的各个部分

② 可以解耦,提高程序的扩展性

③ 增加程序的灵活性 (最后案例中体现)

02   获取Class对象的方式

(1)将字节码文件加载进内存,返回Class对象 

多用于配置文件,将类名定义在配置文件中。读取文件,加载类

Class.forName("全类名")

(2)多用于参数的传递

类名.class

(3)getClass()方法在Object类中定义着 

多用于对象的获取字节码的方式

对象.getClass():

三种方式的代码实现

通过上面的案例我们可以得出:

同一个字节码文件(*.class)在一次程序运行过程中,只加载一次,不论通过哪一种方式获取的Class对象都是同一个

03 Class对象功能

(1) 获取功能

① 获取成员变量们

② 构造方法们

③ 获取成员方法们

④ 获取全类名

 ⑤Field:成员变量

 ⑥Constructor:构造方法

⑦ Method:方法对象

我们来具体使用一下上面的一些方法:

  *获取成员变量们

 * Field[] getFields()

* Field getField(String name)

* Field[] getDeclaredFields()

 Field getDeclaredField(String name)

*获取构造方法们

* Constructor<?>[] getConstructors()

* Constructor<T> getConstructor(类<?>... parameterTypes)

* Constructor<T> getDeclaredConstructor(类<?>... parameterTypes)

* Constructor<?>[] getDeclaredConstructors()

*获取成员方法们

* Method[] getMethods()

* Method getMethod(String name, 类<?>... parameterTypes)

* Method[] getDeclaredMethods()

* Method getDeclaredMethod(String name, 类<?>... parameterTypes)

04 反射案例

通过修改配置文件,达到不改变该类的任何代码,可以创建任意类的对象,可以执行任意方法,避免了每一次都修改类文件的缺点,同时提高了程序的扩展性

我仅仅浅薄的谈了一下反射的基本知识,也有很多不足之处,希望能与大家交流。

相关文章

  • Java反射——Web学习的灵魂!

    我们从最初的 javac -HelloWorld.java,到面向对象部分,我们可以将Java代码在计算机中经历的...

  • Java面试题

    Java面试 Java、框架、JVM Java 基础、容器、多线程、反射、对象拷贝、Java web模块、异常模块...

  • [JAVA学习笔记] 反射机制

    [JAVA学习笔记] 反射机制 Java的反射通过Class类和java.lang.reflect类库实现。通过它...

  • Java中反射的用途

    Java的反射机制是Java特性之一,反射机制是构建框架技术的基础所在。灵活掌握Java反射机制,对大家以后学习框...

  • 一文了解JAVA反射(超详尽!)

    反射是框架设计的灵魂,只有学好了反射,才能设计出好的框架 一.反射的概述 Java反射机制是在运行状态中,对于任意...

  • 一文了解JAVA反射(超详尽!)

    反射是框架设计的灵魂,只有学好了反射,才能设计出好的框架。 一.反射的概述 Java反射机制是在运行状态中,对于任...

  • 【转】Java编程学习之反射技术及其应用

    【转】Java编程学习之反射技术及其应用 (原文链接:java编程学习之反射技术及其应用) 说明:原文中给出的代码...

  • 2020年的秋招已经开始了!最新Java面试题大全(文末附参考答

    包含的模块 本文分为十九个模块,分别是:Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网...

  • JAVA面试(上)

    包含的模块本文分为十九个模块,分别是: Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网...

  • JAVA(上)

    包含的模块本文分为十九个模块,分别是: Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网...

网友评论

    本文标题:Java反射——Web学习的灵魂!

    本文链接:https://www.haomeiwen.com/subject/qmuxrctx.html