java基础反射反射是什么

介绍

这篇文章将为大家详细讲解有关java基础反射反射是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

,反射(反射)是java程序开发语言的特征之一,它允许运行中的java程序获取自身的信息,可以在运行时访问java对象的属性,方法,构造方法等。

应用场景

开发通用框架——反射最重要的用途就是开发各种通用框架。比如春天通过XML文件配置JavaBean,过滤等,为了保证框架的通用性,它们可能需要根据配置文件加载不同的对象或类,调用不同的方法,这个时候就必须用到反射——运行时动态加载需要加载的对象。动态代理——在切面编程(AOP)中,需要拦截特定的方法,通常,会选择动态代理方式。注解——注解本身仅仅是起到标记作用,它需要利用反射机制,根据注解标记去调用注解解释器,执行行为。如果没有反射机制,注解并不比注释更有用。可扩展性功能,应用程序可以通过使用完全限定名称创建可扩展性对象实例来使用外部的用户定义类。缺点

性能开销大——反射操作的性能要比非反射操作的性能要差,应该在性能敏感的应用程序中频繁调用的代码段中避免。破坏封装性——反射调用方法时可以忽略权限检查,因此可能会破坏封装性而导致安全问题。内部曝光——由于反射允许代码执行在非反射代码中非法的操作,例如访问私有字段和方法,所以反射的使用可能会导致意想不到的副作用,这可能会导致代码功能失常并可能破坏可移植性。反射代码打破了抽象,因此可能会随着平台的升级而改变行为. class对象

要想使用反射,首先需要获得待操作的类所对应的类对象。

反射的本质:在运行时,把每个java类中的各种属性映射成一个个的java对象。

假如定义了以下代码:

用户用户=新用户();

1时,JVM加载方法的时候,遇到新用户(),JVM会根据用户的全限定名去加载User.class;

2时,JVM会去本地磁盘查找用户。类文件并加载JVM内存中。

3, JVM通过调用类加载器自动创建这个类对应的类对象,并且存储在JVM的方法区。

获得类的三种方法:

(1)使用类类的forName静态方法

应用场景

开发通用框架——反射最重要的用途就是开发各种通用框架。比如春天通过XML文件配置JavaBean,过滤等,为了保证框架的通用性,它们可能需要根据配置文件加载不同的对象或类,调用不同的方法,这个时候就必须用到反射——运行时动态加载需要加载的对象。动态代理——在切面编程(AOP)中,需要拦截特定的方法,通常,会选择动态代理方式。注解——注解本身仅仅是起到标记作用,它需要利用反射机制,根据注解标记去调用注解解释器,执行行为。如果没有反射机制,注解并不比注释更有用。可扩展性功能,应用程序可以通过使用完全限定名称创建可扩展性对象实例来使用外部的用户定义类。缺点

性能开销大——反射操作的性能要比非反射操作的性能要差,应该在性能敏感的应用程序中频繁调用的代码段中避免。破坏封装性——反射调用方法时可以忽略权限检查,因此可能会破坏封装性而导致安全问题。内部曝光——由于反射允许代码执行在非反射代码中非法的操作,例如访问私有字段和方法,所以反射的使用可能会导致意想不到的副作用,这可能会导致代码功能失常并可能破坏可移植性。反射代码打破了抽象,因此可能会随着平台的升级而改变行为. class对象

要想使用反射,首先需要获得待操作的类所对应的类对象。

反射的本质:在运行时,把每个Java类中的各种属性映射成一个个的Java对象。

假如定义了以下代码:

用户用户=新用户();

1时,JVM加载方法的时候,遇到新用户(),JVM会根据用户的全限定名去加载User.class;

2时,JVM会去本地磁盘查找用户。类文件并加载JVM内存中。

3, JVM通过调用类加载器自动创建这个类对应的类对象,并且存储在JVM的方法区。

获得类的三种方法:

(1)使用类类的forName静态方法

癹ava基础反射反射是什么"

(2)调用对象的getClass方法

癹ava基础反射反射是什么"

反射创建实例对象

用类对象的newInstance方法。用构造函数对象的newInstance方法

癹ava基础反射反射是什么"

java基础反射反射是什么