`
geeksun
  • 浏览: 964964 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

反射机制之---概念

 
阅读更多

反射机制是Java语言中很重要的特性,是在运行时获知对象信息,并可在运行时操作对象的机制。

反射(Reflect), 顾名思义,通过Java对象的Class信息,可以逆向生成对象、探知运行时的对象信息、调用对象方法,一种可以反向作用的机制。

 

反射的用途:

1. 在运行时获取任意对象所属的类对象 

Class<?> clazz = Class.forName(String className);

 

2. 在运行时构造任意类的对象 

Object obj = clazz.newInstance();

 

3. 在运行时获取任意类所具有的成员变量和方法 

field.set(Object obj, Object value);

field.get(Object obj);

 

4. 在运行时调用任意对象的方法 (最常见的需求,尤其是当该方法是私有方法或者隐藏方法)

method.invoke(Object obj, Object... args);

 

 

通过反射机制,已知的应用有:

1. ORM框架使用了反射机制,来实现对象和数据表的映射关系;

2. 动态代理中使用反射机制,动态生成代理角色,这样比较好地解决了静态代理的代码膨胀问题。

 

 

常用的获取类信息方法:

1.  获取类对象

Class clazz = obj.getClass(); 

或 Class clazz = Class.forName(${className});

 

2. 获取对象中声明的方法:

Method[] methods = clazz.getDeclaredMethods();

 

3. 获取对象的属性数据:

Field[] fields = clazz.getDeclaredFields();

 

动态执行对象的方法:

1. Method.invoke()   动态执行对象的方法

如果是私有方法,先把Method的可见性设为true,然后再调用。

method.setAccessible(true);

 

2. Field.setXXX()   动态设置对象的属性

 

 

总结:

反射机制使Java语言在很大程序上增强了灵活性,在语言的动态的功能扩展上有了更多的想象力和空间。

 

 

 

分享到:
评论

相关推荐

    java面试题--反射机制

    动态加载类是Java反射机制的重要应用场景之一。通过`Class.forName()`方法或者`ClassLoader`的`loadClass()`方法,可以根据类名字符串在运行时加载类。 #### 七、操作成员 - **创建对象**:使用`Class`对象的`new...

    精华java-反射机制-reflection-完整例子-具体说明-工程实际(完整版).doc

    本文将深入探讨反射机制的概念、用途、优缺点以及如何使用反射来获取类的相关信息。 一、反射机制的基本概念 反射机制是指在程序运行过程中,通过类的全名获取类对象,从而能够访问和操作类的私有成员(如私有方法...

    反射实例-JAVA反射机制

    ### 反射实例—JAVA反射机制 #### 一、反射概念及原理 反射在计算机科学领域,特别是程序设计中,是指程序有能力访问、检测和修改其自身的结构和行为。这一概念最早由Smith于1982年提出,并迅速应用于各种编程语言...

    实战java反射机制-让你迅速认识java强大的反射机制

    在"实战java反射机制-让你迅速认识java强大的反射机制"这个主题中,我们将深入探讨反射的核心概念和实际应用。 1. 反射基础: Java反射机制主要基于`java.lang.Class`类和`java.lang.reflect`包中的接口和类。`...

    反射实例-JAVA反射机制.doc

    Java 反射机制详解 Java 反射机制是 Java 语言提供的一种强大的工具,它允许程序在运行时动态地获取类的信息(如类名、属性、方法等)并进行操作。这种能力使得 Java 应用程序更加灵活,能够在运行时发现和修改自身...

    Java中的反射机制

    ### Java中的反射机制 #### 一、反射的概念 反射的概念最早由Smith于1982年提出,是指程序能够访问、检测和修改其自身状态或行为的能力。这一概念的引入促进了计算机科学领域对反射性的研究,并迅速被应用于程序...

    Java反射机制 Java反射机制

    Java反射机制的概念起源于早期面向对象语言的设计思想。随着面向对象编程的发展,动态类型和动态绑定的概念逐渐成熟,这为Java反射机制的出现奠定了基础。Java反射机制在JDK 1.1版本中就已经引入,但在JDK 1.5之后...

    Qt 使用QMetaObject实现反射机制代码demo

    在编程领域,反射机制是一种强大的特性,允许程序在运行时检查自身的行为,包括类的信息、对象的状态以及函数的调用等。在C++的世界里,Qt框架提供了一种实现反射的手段,即QMetaObject系统。这个系统允许我们动态地...

    jdk6.0从入门到精通-----chapter16反射机制-spring AOP

    本章我们将深入探讨“反射机制”以及如何结合Spring AOP(面向切面编程)进行应用。反射是Java中的一种强大工具,允许程序在运行时检查类、接口、字段和方法的信息,甚至可以动态创建对象和调用方法。Spring AOP则是...

    java反射机制原理和反射机制总结

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、字段以及方法等对象。这一机制的核心在于`java.lang.Class`类和相关的API,它们提供了对类元数据的访问,使得我们能够在运行时...

    Java高级程序设计实战教程第三章-Java反射机制.pptx

    在本教程中,我们将深入探讨Java反射机制的核心概念、功能、API以及应用场景。 **3.1 应用场景** 反射机制在Java开发中广泛应用于框架设计,如Spring、Struts、Hibernate和MyBatis。通过读取配置文件(如XML或...

    利用java反射机制的建议计算器源码

    在这个“利用java反射机制的建议计算器源码”中,我们将深入探讨如何使用反射来构建一个可扩展的计算器,帮助新手更好地理解这一概念。 首先,让我们解释什么是反射。在Java中,反射机制允许我们获取类的信息(如...

    2020老杜最新Java零基础进阶视频教程-反射机制课件

    【Java反射机制详解】 在Java编程中,反射机制是一个强大的工具,它允许程序在运行时检查自身,并且能够动态地操作类和对象的内部信息。这个特性使得Java代码具有高度的灵活性,能够在不修改源码的情况下,根据需要...

    原生平台反射机制的消息处理-原工程

    原生平台反射机制可以扩展这一概念,让开发者能够处理来自原生环境的特定消息,比如系统通知、硬件设备状态改变等。这些消息通过接口暴露给JavaScript层,然后可以被游戏逻辑或者其他脚本所使用。 3. **Cocos...

    Java 反射机制 代码的实例

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部结构。通过反射,开发者可以动态地获取类的信息并调用其方法,创建对象,访问私有成员,甚至改变类的行为。在深入...

    .NET中反射机制的使用与分析_-_focus_on_.NET_-_博客园

    #### 反射机制的核心概念 反射在.NET中的运作基于元数据的概念,元数据是描述程序集、类型和成员的二进制信息。当代码被编译成公共语言运行库(CLR)可理解的格式时,元数据便被嵌入其中。这包括了类型和成员的描述...

    折射-反射-枚举-单元测试综合案例

    在IT行业中,"折射-反射-枚举-单元测试综合案例"这个主题涵盖了四个关键的编程概念:折射(代理)、反射、枚举和单元测试。这些是Java编程中尤为重要的技术,广泛应用于软件开发的不同阶段。 首先,让我们来详细...

    Java反射机制学习(二)

    这篇博文"Java反射机制学习(二)"可能深入探讨了如何利用反射进行动态类型处理、访问私有成员以及创建对象等核心概念。在这里,我们将详细讨论Java反射的基本用法及其在实际开发中的应用。 1. **什么是反射**: ...

Global site tag (gtag.js) - Google Analytics