Java中的反射机制

           反射  reflection

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

          主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。

反射机制的作用:

             1.静态编译:在编译时确定类型,绑定对象,即通过。

    2.通过反射机制访问java对象的属性,方法,构造方法等;

   优点

     可以实现动态创建对象和编译,体现出很大的灵活性,特别是在J2EE的开发中它的灵活性就表现的十分明显。比如,一个大型的软件,不可能一次就把把它设计的很完美,当这个程序编译后,发布了,当发现需要更新某些功能时,我们不可能要用户把以前的卸载,再重新安装新的版本,假如这样的话,这个软件肯定是没有多少人用的。采用静态的话,需要把整个程序重新编译一次才可以实现功能的更新,而采用反射机制的话,它就可以不用卸载,只需要在运行时才动态的创建和编译,就可以实现该功能。

   缺点

     对性能有影响。使用反射基本上是一种解释操作,我们可以告诉JVM,我们希望做什么并且它满足我们的要求。这类操作总是慢于只直接执行相同的操作。


JAVA反射机制主要提供了以下功能: 

            1.在运行时判断任意一个对象所属的类
    2.在运行时构造任意一个类的对象
    3.在运行时判断任意一个类所具有的成员变量和方法(通过反射甚至可以调用private方法)
    4.在运行时调用任意一个对象的方法(*****注意:前提都是在运行时,而不是在编译时)

 
Class类的API             
       方法关键字                        含义
    getDeclaredMethods()                  获取所有的方法
    getReturnType()                         获得方法的反回类型
    getParameterTypes()                      获得方法的传入参数类型
    getDeclaredMethod("方法名",参数类型.class,……)    获得特定的方法

     
      构造方法关键字                      含义
    getDeclaredConstructors()                获取所有的构造方法
    getDeclaredConstructor(参数类型.class,……)       获取特定的构造方法
        
      父类和父接口                              含义
    getSuperclass()                           获取某类的父类
    getInterfaces()                           获取某类实现的接口


获取字节码文件对象的三种方式。

 

    1."Object.getClass()" : 如果一个类的对象可用,则最简单的获得Class的方法是使用Object.getClass()、当然,此方式只对引用类型有效。
     2. ".class"------------- : 如果类型可用但没有对象,则可以在类型后加上".class"来获得Class对象。这也是使原始类型获得Class对象最简单的方式:
    3."Class.forName()"---:如果知道类的全名,则可以使用静态方法Class.forName()来获得Class对象,它不能用在原始类型上,但是可以用在原始类型数组上。(注:此方式会抛出ClassNotFoundException异常)
     4. "包装类的TYPE域"-----:每一个原始类型和void都有包装类。利用其TYPE域就可以获得Class对象。
    5."以Class为返回值的方法": 如获取内部类的getDeclaredClasses()方法,此时返回一个对象数组


            使用反射机制的步骤
                   首先: 导入java.lang.relfect 包
           然后: 遵循三个步曲:
                  (1)获得你想操作的类的 java.lang.Class 对象
                  (2)调用诸如 getDeclaredMethods 的方法
                  (3)使用反射API 来操作这些信息




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
后台采用apache服务器下的cgi处理c语言做微信小程序后台逻辑的脚本映射。PC端的服务器和客户端都是基于c语言写的。采用mysql数据库进行用户数据和聊天记录的存储。.zip C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据型 在C语言,变量用于存储数据,数据型用于定义变量的型和范围。C语言支持多种数据型,包括基本数据型(如int、float、char等)和复合数据型(如结构体、联合等)。 2. 运算符 C语言常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言用于封装代码的单元,可以实现代码的复用和模块化。C语言定义函数使用关键字“void”或返回值型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言用于存储同型数据的结构,可以通过索引访问和修改数组的元素。字符串是C语言用于存储文本数据的特殊型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言用于存储不同型数据的复合数据型。结构体由多个成员组成,每个成员可以是不同的数据型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值