JAVA基础学习5

 

JAVA反射

反射(Reflection)是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性。

反射的应用场景

·开发通用框架
·动态代理
·注解
·可扩展性功能

反射的缺点

性能开销
破坏封装性
内部曝光

Class 对象

Java 中,无论生成某个类的多少个对象,这些对象都会对应于同一个 Class 对象。这个 Class 对象是由 JVM 生成的,通过它能够获悉整个类的结构

···
反射的本质就是:在运行时,把 Java 类中的各种成分映射成一个个的 Java 对象。

··java.lang.Class 可以视为所有反射 API 的入口点。

方法的反射调用

Method.invoke

Method.invoke 方法实际上委派给 MethodAccessor 接口来处理。

····················

(JAVA反射和JAVA代理这部分看不懂,先把框架摆着 )

JAVA代理

JAVA反射

——–下面是一些帮助理解的条目

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

要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象.

Java Reflection API简介

  在JDK中,主要由以下类来实现Java反射机制,这些类(除了第一个)都位于java.lang.reflect包中

  Class类:代表一个类,位于java.lang包下。

  Field类:代表类的成员变量(成员变量也称为类的属性)。

  Method类:代表类的方法。

  Constructor类:代表类的构造方法。

  Array类:提供了动态创建数组,以及访问数组的元素的静态方法。

····一句话概括就是使用反射可以赋予jvm动态编译的能力,否则类的元数据信息只能用静态编译的方式实现,例如热加载,Tomcat的classloader等等都没法支持。

Java反射是Java被视为动态(或准动态)语言的一个关键性质。

反射(reflection)允许静态语言在运行时(runtime)检查、修改程序的结构与行为。

写两句?