`
一帆风顺
  • 浏览: 3606 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

反射api

    博客分类:
  • java
 
阅读更多

反射机制允许程序在运行时进行自我检查,对其内部成员进行操作

实现在运行时对类进行装载,增加对程序的灵活性

 

功能:

       得到一个对象的所属类;获取类的所有变量和方法;运行时创建对象、调用对象方法

 

获取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的一个实例

    在Java编程语言中,反射API(Reflection API)是一种强大的工具,允许程序在运行时检查和操作其他类的信息,包括类的结构、字段、方法以及构造器。反射API使得程序员可以在未知类名或方法名的情况下,动态地创建对象...

    php反射api.pdf

    反射API不仅能够帮助开发者深入了解程序结构,还能在某些场景下实现动态编程的需求。本文将深入探讨PHP反射API的关键组件及其用法。 #### 二、核心概念与API概览 反射API的核心概念围绕着一系列类和接口展开,主要...

    java反射全解(反射原理+反射API详解+反射与数组+反射与泛型+反射源码与性能开销+反射优缺点+反射与内省)

    反射机制的分类包括反射 API、反射与数组、反射与泛型、反射源码与性能开销、反射优缺点、反射与内省等。 反射 API 是 Java 语言提供的一组 Application Programming Interface(API),用于在运行时获取类的信息和...

    Java IOC及反射api代码参考实例

    反射API则是Java提供的一种强大的工具,它允许程序在运行时检查和操作类、接口、字段和方法等。通过反射,我们可以动态地创建对象、调用方法、访问和修改字段值,甚至可以执行私有成员的操作。 在Java IOC中,反射...

    mirror,Java反射API上的简单DSL层.zip

    《深入解析Java反射API与mirror DSL层》 Java反射API(Reflection API)是Java语言提供的一种强大工具,它允许程序在运行时检查类、接口、字段和方法的信息,甚至能够动态调用方法和修改对象状态。这个强大的特性...

    PHP面向对象程序设计之类与反射API详解共5页.pdf

    反射API还可以用来实例化对象,即使构造函数是私有的或受保护的: ```php $reflection = new ReflectionClass('PrivateConstructorClass'); $instance = $reflection-&gt;newInstanceWithoutConstructor(); ``` 此外...

    OkReflect,OKFISH是一个试图帮助您轻松使用Java反射API的库。.zip

    Java反射API是Java编程语言中的一个强大工具,它允许程序在运行时检查和操作类、接口、字段和方法的信息。OkReflect与OKFISH是两个致力于简化这一过程的开源库,旨在让Java开发者更加便捷地利用反射功能。下面将详细...

    jOOR,java joor中的joor-fluent反射是一个非常简单的fluent api,它以更直观的方式提供对java类结构的访问。jdk的反射api很难使用,而且冗长。其他语言有更简单的结构来在运行时访问类型元信息。让我们改进Java反射。.zip

    Java反射API是Java平台的核心特性之一,允许程序在运行时检查和操作类、接口、字段和方法等对象。然而,由于其语法复杂且冗长,许多开发者在使用时可能会遇到困难。这就是jOOR项目的意义所在——它提供了一个更加...

    JAVA反射详解

    通过反射API,开发者能够调用`Class`对象的方法,获取诸如构造函数、方法和字段等信息。此外,`Class`对象同样适用于接口,可以用来查询接口的修饰符、方法和公共常量。 #### 获得Class对象的方式 1. **通过实例...

    mirror-js:简单JavaScript反射API

    镜像js 简单JavaScript反射API。 我将此模块供我个人使用,但请不要犹豫,在这里!安装$ npm install mirror-js用法var baseObj = { } ;var mirror = require ( 'mirror-js' ) ;var clone = mirror ( baseObj ) . ...

    reflection:SystemVerilog 的反射 API

    它引入了反射API,这是一种强大的编程概念,允许在运行时检查和操作程序的内部结构。反射API为设计者提供了动态地访问和修改设计元素的能力,如类、接口、任务、函数等,极大地增强了调试和验证的灵活性。 在...

    PHP反射API示例分享

    在本文中,我们将深入探讨PHP的反射API(Reflection API)以及如何利用反射技术构建一个插件系统架构。...然而,需要注意的是,反射API的使用可能会带来性能上的损失,因此在性能敏感的场景下应谨慎使用。

    PHP反射使用实例和PHP反射API的中文说明

    例如,有一个方法原型为test($uid,$score),可以通过反射API获取到参数名和默认值,然后从$_GET中取出相应的值,并进行方法调用。 接着,文章介绍了反射API的基本概览,包括各个反射相关的类和接口。这些类和接口...

    java_反射实战代码

    反射API可以获取程序在运行时刻的内部结构,反射API提供的动态代理是非常强大的功能,可以原生的实现AOP中的方法拦截功能,反射API就好像在看一个Java类在水中的倒影,知道Java类的内部结构,就可以和它们进行交互,...

    浅谈PHP的反射API

    如何使用反射API 示例代码 Person.php Person类,包含一个成员变量和三个成员方法 获取$student对象的方法和属性列表 ReflectionClass类报告了一个类的有关信息 输出结果为:name say __set __get 也可以用class...

    php-static-reflection:静态反射API

    反射API的实现,用于解析PHP源文件。 这允许反射而无需加载类。 由于PHP无法卸载类,因此当您需要检查类但无需加载类(例如提取元数据)时,这对于减少内存占用非常有用。 以下是在drupal 8测试类上将“反射”与...

Global site tag (gtag.js) - Google Analytics