旗下导航:搜·么
当前位置:网站首页 > JAVA教程 > 正文

java基本反射Reflection简朴引见【JAVA教程】,Java

作者:搜教程发布时间:2019-11-27分类:JAVA教程浏览:70评论:0


导读:反射(Reflection)是Java顺序开辟言语的特性之一,它许可运转中的Java顺序猎取自身的信息,能够在运转时接见Java对象的属性,要领,组织要领等。...
反射(Reflection)是 Java 顺序开辟言语的特性之一,它许可运转中的 Java 顺序猎取自身的信息,能够在运转时接见 Java 对象的属性,要领,组织要领等。

运用场景

开辟通用框架 - 反射最主要的用处就是开辟种种通用框架。比方 Spring经由过程 XML 文件设置 JavaBean、Filter 等,为了保证框架的通用性,它们能够须要依据设置文件加载差别的对象或类,挪用差别的要领,这个时刻就必须用到反射——运转时动态加载须要加载的对象。动态代办 - 在切面编程(AOP)中,须要阻拦特定的要领,一般,会挑选动态代办体式格局。注解 - 注解自身仅仅是起到标记作用,它须要应用反射机制,依据注解标记去挪用注解诠释器,实行行动。如果没有反射机制,注解并不比解释更有效。可扩大性功用 - 运用顺序能够经由过程运用完整限制称号建立可扩大性对象实例来运用外部的用户定义类。瑕玷

机能开支 大- 反射操纵的机能要比非反射操纵的机能要差,应该在机能敏感的运用顺序中频仍挪用的代码段中防止。损坏封装性 - 反射挪用要领时能够疏忽权限搜检,因而能够会损坏封装性而致使安全问题。内部暴光 - 因为反射许可代码实行在非反射代码中不法的操纵,比方接见私有字段和要领,所以反射的运用能够会致使意想不到的副作用,这能够会致使代码功用失常并能够损坏可移植性。反射代码打破了笼统,因而能够会跟着平台的升级而转变行动。Class 对象

要想运用反射,起首须要取得待操纵的类所对应的 Class 对象。

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

如果定义了以下代码:

User user = new User();

1、JVM 加载要领的时刻,碰到new User(),JVM 会依据User的全限制名去加载User.class;

2、JVM 会去当地磁盘查找User.class文件并加载 JVM 内存中。

3、JVM 经由过程挪用类加载器自动建立这个类对应的Class对象,而且存储在 JVM 的要领区。

取得 Class 的三种要领:

(1)运用 Class 类的 forName静态要领

运用场景

开辟通用框架 - 反射最主要的用处就是开辟种种通用框架。比方 Spring经由过程 XML 文件设置 JavaBean、Filter 等,为了保证框架的通用性,它们能够须要依据设置文件加载差别的对象或类,挪用差别的要领,这个时刻就必须用到反射——运转时动态加载须要加载的对象。动态代办 - 在切面编程(AOP)中,须要阻拦特定的要领,一般,会挑选动态代办体式格局。注解 - 注解自身仅仅是起到标记作用,它须要应用反射机制,依据注解标记去挪用注解诠释器,实行行动。如果没有反射机制,注解并不比解释更有效。可扩大性功用 - 运用顺序能够经由过程运用完整限制称号建立可扩大性对象实例来运用外部的用户定义类。瑕玷

机能开支 大- 反射操纵的机能要比非反射操纵的机能要差,应该在机能敏感的运用顺序中频仍挪用的代码段中防止。损坏封装性 - 反射挪用要领时能够疏忽权限搜检,因而能够会损坏封装性而致使安全问题。内部暴光 - 因为反射许可代码实行在非反射代码中不法的操纵,比方接见私有字段和要领,所以反射的运用能够会致使意想不到的副作用,这能够会致使代码功用失常并能够损坏可移植性。反射代码打破了笼统,因而能够会跟着平台的升级而转变行动。Class 对象

要想运用反射,起首须要取得待操纵的类所对应的 Class 对象。

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

如果定义了以下代码:

User user = new User();

1、JVM 加载要领的时刻,碰到new User(),JVM 会依据User的全限制名去加载User.class;

2、JVM 会去当地磁盘查找User.class文件并加载 JVM 内存中。

3、JVM 经由过程挪用类加载器自动建立这个类对应的Class对象,而且存储在 JVM 的要领区。

取得 Class 的三种要领:

(1)运用 Class 类的 forName静态要领

(2)挪用 Object 的 getClass要领

反射建立实例对象

用 Class对象的 newInstance要领。用 Constructor对象的 newInstance 要领

java.lang.reflect包的中心接口和类

Member接口 - 反应关于单个成员(字段或要领)或组织函数的标识信息。Field类 - 供应一个类的域的信息以及接见类的域的接口。Method类 - 供应一个类的要领的信息以及接见类的要领的接口。Constructor类 - 供应一个类的组织函数的信息以及接见类的组织函数的接口。Array类 - 该类供应动态地生成和接见 JAVA 数组的要领。Modifier类 - 供应了 static 要领和常量,对类和成员接见修饰符举行解码。Proxy类 - 供应动态地生成代办类和类实例的静态要领。

【引荐课程:Java相干课程】

以上就是java基本反射Reflection简朴引见的细致内容,更多请关注ki4网别的相干文章!

标签:Java


欢迎 发表评论: