反射机制允许程序在运行时进行自我检查,对其内部成员进行操作
实现在运行时对类进行装载,增加对程序的灵活性
功能:
得到一个对象的所属类;获取类的所有变量和方法;运行时创建对象、调用对象方法
获取Class对象的三种方式:
1、Class.forName("类的完全限定名");
2、类名.class;
3、对象.getClass();
String getName();Class类所表示的实体(类,接口,数组类,基本类型或void)完整名称
String getCanonicalName();与getName()方法一样
String getSimpleName();Class类所表示的实体(类,接口,数组类,基本类型或void)类名称
Class getSuperclass(); 返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的父类的 Class。
Object newInstance();为类创建一个实例,前提这个类必须得有无参构造方法
ClassLoader getClassLoader();返回这个类的类加载器
Class getComponentType(); 返回表示数组组件类型的 Class。
boolean isArray(); 判定此 Class 对象是否表示一个数组类
boolean isInterface(); 判定此 Class 对象是否表示一个接口
构造方法
Constructor getConstructor();获得类的无参构造方法再通过Constructor的newInstance()创建实例
Constructor getConstructor(Class<?>... parameterTypes);该方法参数与构造器的参数类型的Class对象对应
获得类的有参构造方法再通过Constructor的newInstance(Object ... initargs)创建实例
属性
Field getField(String name);通过属性名获取类的public修饰的属性
通过Field的set(Object obj, Object value)给该属性赋值obj该属性所在类的对象,value设值
Field的get(Object obj)获取该属性值obj该属性所在类的对象
Field[] getFields();获取类的所有public修饰的属性
Field getDeclaredField(String name);通过属性名获取类的任意域的属性
获取私有的属性必须使用Field的setAccessible(boolean flag)方法给予访问的权限
Field[] getDeclaredFields();获取类中所有的属性,同样私有的属性需要给予权限
方法
Method getMethod(String name, Class<?>... parameterTypes);
第一个参数通过方法名获取类中public修饰的方法,第二个参数与该方法参数类型的Class对象对应,若是无参直接给null;
通过Method的invoke(Object obj, Object... args)方法调用该方法,obj该方法所在类的对象,args方法参数
Method[] getMethods();获取类中所有public修饰的方法
Method getDeclaredMethod(String name, Class<?>... parameterTypes)
与getMethod()方法作用一样,但可以获取任意修饰符修饰的方法
private方法仍需要通过setAccessible(boolean flag)给予权限
Method[] getDeclaredMethods();获取类中任意修饰符修饰的方法同样私有的方法需要给予权限
通过Method的getReturnType()方法获取方法返回值类型、getParmenterTypes()方法获取方法的参数列表
相关推荐
在Java编程语言中,反射API(Reflection API)是一种强大的工具,允许程序在运行时检查和操作其他类的信息,包括类的结构、字段、方法以及构造器。反射API使得程序员可以在未知类名或方法名的情况下,动态地创建对象...
反射API不仅能够帮助开发者深入了解程序结构,还能在某些场景下实现动态编程的需求。本文将深入探讨PHP反射API的关键组件及其用法。 #### 二、核心概念与API概览 反射API的核心概念围绕着一系列类和接口展开,主要...
反射机制的分类包括反射 API、反射与数组、反射与泛型、反射源码与性能开销、反射优缺点、反射与内省等。 反射 API 是 Java 语言提供的一组 Application Programming Interface(API),用于在运行时获取类的信息和...
反射API则是Java提供的一种强大的工具,它允许程序在运行时检查和操作类、接口、字段和方法等。通过反射,我们可以动态地创建对象、调用方法、访问和修改字段值,甚至可以执行私有成员的操作。 在Java IOC中,反射...
《深入解析Java反射API与mirror DSL层》 Java反射API(Reflection API)是Java语言提供的一种强大工具,它允许程序在运行时检查类、接口、字段和方法的信息,甚至能够动态调用方法和修改对象状态。这个强大的特性...
反射API还可以用来实例化对象,即使构造函数是私有的或受保护的: ```php $reflection = new ReflectionClass('PrivateConstructorClass'); $instance = $reflection->newInstanceWithoutConstructor(); ``` 此外...
Java反射API是Java编程语言中的一个强大工具,它允许程序在运行时检查和操作类、接口、字段和方法的信息。OkReflect与OKFISH是两个致力于简化这一过程的开源库,旨在让Java开发者更加便捷地利用反射功能。下面将详细...
Java反射API是Java平台的核心特性之一,允许程序在运行时检查和操作类、接口、字段和方法等对象。然而,由于其语法复杂且冗长,许多开发者在使用时可能会遇到困难。这就是jOOR项目的意义所在——它提供了一个更加...
通过反射API,开发者能够调用`Class`对象的方法,获取诸如构造函数、方法和字段等信息。此外,`Class`对象同样适用于接口,可以用来查询接口的修饰符、方法和公共常量。 #### 获得Class对象的方式 1. **通过实例...
镜像js 简单JavaScript反射API。 我将此模块供我个人使用,但请不要犹豫,在这里!安装$ npm install mirror-js用法var baseObj = { } ;var mirror = require ( 'mirror-js' ) ;var clone = mirror ( baseObj ) . ...
它引入了反射API,这是一种强大的编程概念,允许在运行时检查和操作程序的内部结构。反射API为设计者提供了动态地访问和修改设计元素的能力,如类、接口、任务、函数等,极大地增强了调试和验证的灵活性。 在...
在本文中,我们将深入探讨PHP的反射API(Reflection API)以及如何利用反射技术构建一个插件系统架构。...然而,需要注意的是,反射API的使用可能会带来性能上的损失,因此在性能敏感的场景下应谨慎使用。
例如,有一个方法原型为test($uid,$score),可以通过反射API获取到参数名和默认值,然后从$_GET中取出相应的值,并进行方法调用。 接着,文章介绍了反射API的基本概览,包括各个反射相关的类和接口。这些类和接口...
反射API可以获取程序在运行时刻的内部结构,反射API提供的动态代理是非常强大的功能,可以原生的实现AOP中的方法拦截功能,反射API就好像在看一个Java类在水中的倒影,知道Java类的内部结构,就可以和它们进行交互,...
如何使用反射API 示例代码 Person.php Person类,包含一个成员变量和三个成员方法 获取$student对象的方法和属性列表 ReflectionClass类报告了一个类的有关信息 输出结果为:name say __set __get 也可以用class...
反射API的实现,用于解析PHP源文件。 这允许反射而无需加载类。 由于PHP无法卸载类,因此当您需要检查类但无需加载类(例如提取元数据)时,这对于减少内存占用非常有用。 以下是在drupal 8测试类上将“反射”与...