当前位置: 首页 > 编程笔记 >

java反射机制Reflection详解

呼延聪
2023-03-14
本文向大家介绍java反射机制Reflection详解,包括了java反射机制Reflection详解的使用技巧和注意事项,需要的朋友参考一下

Java语言有好些个名词,让人望而生畏。

上智不教即知,下愚虽教无益,中庸之人,不教不知。

人的天性中就有一点对未知的恐惧。

刚开始不了解,也没认真看,发现好难呀;等,静下心来自己研究,再看其实不难,发现都是纸老虎,不堪一击。

今天就来分析一下反射:Reflection 

看一下维基百科的解释:

在诸如Java之类的面向对象的程序设计语言中,反射允许在程序运行期间访问 类、接口、字段和方法,而不必在编译期间知道接口、字段或者方法的名称。

反射也允许实例化对象和调用方法。

总结三点:

第一:反射可以获取类、接口、字段和方法的信息。

第二:不止new可以创建对象,反射也可以实例化对象。

第三:通过反射实现对方法的调用。

对于创建对象或者调用方法:正常的步骤是先用new关键词,造一个对象,然后再使用此对象的引用去调用方法,这是正常的套路。

反射就是不按正常套路来,但是殊途同归,本来可以一步到位的东西,他要分几个详细的步骤或者绕个弯走。而他的先获取Class类对象,再去创建对象仿佛就是分步走。

然后通过Class类对象获取Method,然后通过Method的invoke方法调用对象的方法就是在绕个弯。

首先要创建一个Reflection测试类

使用反射创建对象,用new创建对象就没必要再说了。JavaAPI为反射机制提供了一些类包括Class和java.lang.reflect包下的类。

(1)第一种方式:使用Class类的forName静态方法,可以获取一个类对象,然后调用类对象的newInstance方法创建对象。

(2)第二种方式:直接使用类名.class获取类对象,然后调用类对象的newInstance方法创建对象。

使用反射,获取类的public方法,并尝试调用类的方法。

(1)首先通过反射获取类对象,通过类对象的getMethods方法,获取类的所有public方法Method[]。

Method是java.lang.reflect包下的类:提供某个 类、接口 的单一方法信息,提供对方法的访问。这个反射方法可以获取类方法或者实例方法。

循环输出方法名,可以看到,不止test1、3还有equals、hashCode等继承Object的方法。

但是并没有test2,因为他不是public类型的方法。

(2)使用Method的invoke调用方法test1和hashCode

(3)也可以使用getMethod获取Method,不过要注意其参数

第一个参数:方法名

第二个参数:此方法参数的类型集合

使用反射,获取类的public字段,和获取方法类似,也有两个方法,一个是获取所有的public字段,另一个是获取某个public字段

使用反射,获取类和方法的注解。(Retention(RetentionPolicy.RUNTIME),RUNTIME类型的才能获取到)

(1)获取类的注解

(2)获取方法的注解

 类似资料:
  • 本文向大家介绍Java反射机制(Reflection)浅析,包括了Java反射机制(Reflection)浅析的使用技巧和注意事项,需要的朋友参考一下 Reflection也就是反射,是Java语言的一个重要特征,我们知道,在使用一个类之前,我们往往都已经创建好它了,比如创建一个类文件,然后再写些属性、方法等,也就是这种类是静态的,但反射机制却允许你动态地创建一个类。除了动态地创建一个类外,我们还

  • 本文向大家介绍详解C# 反射(Reflection),包括了详解C# 反射(Reflection)的使用技巧和注意事项,需要的朋友参考一下 C# 反射(Reflection) 反射指程序可以访问、检测和修改它本身状态或行为的一种能力。 程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。 您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中

  • 本文向大家介绍Java中的反射机制详解,包括了Java中的反射机制详解的使用技巧和注意事项,需要的朋友参考一下 Java中的反射机制详解 反射,当时经常听他们说,自己也看过一些资料,也可能在设计模式中使用过,但是感觉对它没有一个较深入的了解,这次重新学习了一下,感觉还行吧! 一,先看一下反射的概念: 主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修

  • 本文向大家介绍JAVA反射机制实例详解,包括了JAVA反射机制实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了JAVA反射机制。分享给大家供大家参考,具体如下: 反射,当时经常听他们说,自己也看过一些资料,也可能在设计模式中使用过,但是感觉对它没有一个较深入的了解,这次重新学习了一下,感觉还行吧! 一、先看一下反射的概念: 主要是指程序可以访问,检测和修改它本身状态或行为的一种能力

  • Reflection对象用于在运行时获取类型信息。 提供对正在运行的程序的元数据的访问的类位于System.Reflection命名空间中。 System.Reflection命名空间包含的类允许您获取有关应用程序的信息,并动态地向应用程序添加类型,值和对象。 反射的应用 反射有以下应用 - 它允许在运行时查看属性信息。 它允许检查程序集中的各种类型并实例化这些类型。 它允许后期绑定到方法和属性

  • 本文向大家介绍实例介绍PHP的Reflection反射机制,包括了实例介绍PHP的Reflection反射机制的使用技巧和注意事项,需要的朋友参考一下 PHP5添加了一项新的功能:Reflection。这个功能使得程序员可以reverse-engineer class, interface,function,method and extension。通过PHP代码,就可以得到某object的所有信