`
xgbjmxn
  • 浏览: 269278 次
  • 性别: Icon_minigender_1
  • 来自: 新乡
社区版块
存档分类
最新评论

深入剖析JAVA反射机制强大功能

阅读更多
    *
      深入剖析JAVA反射机制强大功能
    * http://developer.51cto.com  2010-09-17 12:39  admin  hi.baidu.com  我要评论(0)

      JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法。

      本文向大家描述一下JAVA反射机制的概念,JAVA反射机制:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。

      JAVA反射机制定义:  

      JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

      Java反射机制主要提供了以下功能:在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。

      有时候我们说某个语言具有很强的动态性,有时候我们会区分动态和静态的不同技术与作法。我们朗朗上口动态绑定(dynamicbinding)、动态链接(dynamiclinking)、动态加载(dynamicloading)等。然而“动态”一词其实没有绝对而普遍适用的严格定义,有时候甚至像对象导向当初被导入编程领域一样,一人一把号,各吹各的调。

      一般而言,开发者社群说到动态语言,大致认同的一个定义是:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。

      尽管在这样的定义与分类下Java不是动态语言,它却有着一个非常突出的动态相关机制:Reflection。这个字的意思是“反射、映象、倒影”,用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods1。这种“看透 class”的能力(theabilityoftheprogramtoexamineitself)被称为introspection(内省、内观、反省)。Reflection和introspection是常被并提的两个术语。

      Java如何能够做出上述的动态特性呢?

      这是一个深远话题,本文对此只简单介绍一些概念。整个篇幅最主要还是介绍ReflectionAPIs,也就是让读者知道如何探索class的结构、如何对某个“运行时才获知名称的class”生成一份实体、为其fields设值、调用其methods。本文将谈到 java.lang.Class,以及java.lang.reflect中的Method、Field、Constructor等等classes。

      【编辑推荐】
         1. 关于Java反射机制的一个实例
         2. JAVA反射机制的简单应用
         3. Java编译过程与c/c++编译过程有何不同
         4. Java虚拟机发展回顾 为跨平台而生
         5. Java虚拟机(JVM)中的内存设置详解
分享到:
评论

相关推荐

    java反射深入剖析(推荐)

    本文将深入剖析Java反射的概念及其在实际开发中的应用。 首先,我们需要了解,反射的核心在于`java.lang.Class`类。每个类在Java中都有一个与之对应的`Class`对象,它包含了类的所有元数据信息。例如,在案例1中,...

    java学习资料-反射机制深入理解剖析

    Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。这个特性使得Java具有高度的灵活性和强大的功能,尤其是在开发框架、插件系统以及元数据处理等方面有着广泛的...

    JAVA反射机制原理剖析配经典例子,以及模拟DBUTIL发射实现的JDBC操作包自己写的一个DEMO.★

    Java反射机制是Java语言中一个强大的特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够动态地创建对象和调用方法。在Java编程中,反射机制为程序提供了灵活的控制,使开发者可以对代码进行更加深入的...

    深入Java虚拟机附源码

    10. **反射与动态代理**:Java反射机制允许我们在运行时检查和修改类的行为,动态代理则可以在运行时创建代理对象,两者在插件化开发、AOP(面向切面编程)等领域有广泛应用。 通过对《深入Java虚拟机》的阅读和...

    Java常见笔试、面试题目深度剖析 反射详解

    Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制...

    Java常见笔试、面试题目深度剖析

    7. **反射机制**:反射是Java强大的特性,能动态获取类的信息并操作类的对象。面试中可能会涉及Class类的使用,newInstance(),getMethod(),getField()等方法。 8. **JVM**:理解Java虚拟机的工作原理,包括内存...

    Java零基础 - Java的加载与执行原理剖析.md

    ### Java零基础 - Java的加载与执行原理剖析 #### 一、概述 Java作为一种流行的编程...掌握了这些原理后,我们将能够更好地理解和调试Java应用程序,并能更有效地利用Java反射机制来开发出更加灵活和强大的软件系统。

    Java反射总结:入门进阶到使用

    Java反射是Java编程语言的一...综上所述,Java反射机制提供了强大的动态操作能力,但同时也带来了性能损耗和安全风险,因此在使用时需要权衡利弊。在理解反射机制的基础上,我们可以编写更加灵活和适应性强的Java程序。

    Java基础源码剖析经典

    5. **反射机制**:Java反射API允许我们在运行时动态地访问类、接口、字段和方法,是许多高级功能(如插件系统、序列化)的基础。源码分析能帮助我们更好地利用和控制反射。 6. **I/O流**:Java的流模型是其I/O操作...

    深入Java虚拟机 Bill Venners著 2003.09 P461.rar

    同时,书中也探讨了Java的动态扩展机制,如类的动态加载和反射,这些都是Java平台灵活性和强大功能的重要体现。 综上所述,《深入Java虚拟机》不仅涵盖了JVM的基本概念,还深入剖析了其核心组件的工作原理,是Java...

    Java常见笔试、面试系列深度剖析第三讲

    现在,让我们深入探讨一下Java反射机制的相关知识点。 1. **反射的基础概念**: - 反射是Java提供的一种强大的元数据访问机制,它允许程序在运行时检查类的结构,包括类名、属性、方法等信息。 - 反射API包含在`...

    疯狂JAVA实战演义

    JAVA反射机制允许在运行时动态地获取类的信息并操作类的对象,这对于插件系统、元编程和调试都有重要作用。书中会探讨反射的使用及其背后的机制。 最后,理解JVM(JAVA虚拟机)的工作原理对于优化JAVA程序至关重要...

    精通java核心技术

    最后,Java的反射机制和注解处理为程序提供了强大的动态特性和元数据功能。书中会介绍如何利用反射进行运行时类型检查和对象操作,以及如何自定义注解和注解处理器,以实现更灵活的编程。 总的来说,《精通Java核心...

    JAVA2深度历险.pdf

    其次,可能会深入探讨Java反射机制和动态代理,这两个特性让Java在运行时具有了强大的元数据操作能力和动态代码生成能力,广泛应用于框架开发和测试工具中。此外,书中也可能涉及Java的异常处理机制、错误与异常的...

    疯狂的java讲义

    7. **反射机制**:Java的反射机制允许在运行时动态获取类的信息并操作对象,这对于理解和调试代码,以及实现动态代理等高级功能非常有用。 8. **泛型**:泛型引入了类型参数,增强了代码的类型安全性和可重用性,...

    java夜未眠-蔡学镛著

    蔡学镛会深入剖析Java集合框架,包括List、Set、Map接口,以及ArrayList、LinkedList、HashSet、HashMap等具体实现类的使用和性能分析,还会涉及泛型、迭代器和流API等内容。 六、IO与NIO 书中会讨论Java的输入输出...

    Java解惑(中文).pdf

    书中将深入剖析它们的工作原理,如ArrayList与LinkedList的区别,HashMap与ConcurrentHashMap的并发性能等。 6. **IO与NIO**:Java的输入输出系统提供了处理文件、网络流等功能。NIO(非阻塞I/O)为高性能网络编程...

    Oracle---Fundamentals of the Java Programming Language, Java SE 6 Ed 1 架构体系文档

    文档还详细介绍了Java SE 6中的核心类库与API,包括JFC/Swing图形用户界面组件、AWT、JavaBeans、Java IO/NIO、Java集合框架、Java反射、Java网络编程、Java数据库连接(JDBC)、Java XML解析与处理等。通过这些内容...

    JAVA核心技术卷二(高级特性)

    4. **集合框架**:深入剖析JAVA集合框架,包括`List`、`Set`、`Map`接口的实现类如`ArrayList`、`LinkedList`、`HashSet`、`TreeSet`、`HashMap`、`TreeMap`等,以及`Iterator`、`ListIterator`的遍历方式。...

    36篇JAVA文档(不为人知的问题及分析+程序员必知要点)

    这份包含36篇文章的文档集合,旨在深入剖析Java中的不为人知的问题,提供程序员必须掌握的关键知识点,以及如何应对面试中可能遇到的问题。下面将详细讨论这些文档可能涵盖的内容。 1. **内存管理与垃圾回收**:...

Global site tag (gtag.js) - Google Analytics