当前位置 主页 > 行业资讯 > 最大化 缩小

    编程语言的深入了解:Java反射机制

    栏目:行业资讯 时间:2019-10-21 11:06

        编程语言的深入了解:Java反射机制
                                         
        一、什么叫Java反射机制?
        Java中的反射机制是指在运行状态中,对于任意一个类,能够动态获取这个类中的属性和方法;对于任意一个对象,都能够任意调用它的属性和方法。这种动态获取类的信息以及动态调用对象方法的功能称为Java的反射机制。总结就是:反射可以实现运行时知道任意一个类的属性和方法。
        Java的反射机制允许编程人员在对类未知的情况下,获取类相关信息的方式变得更加多样灵活,调用类中相应方法,是Java增加其灵活性与动态性的一种机制。
        反射这一概念最早由编程开发人员Smith在1982年提出,主要指应用程序访问、检测、修改自身状态与行为的能力。这一概念的提出立刻吸引了编程界的极大关注,各种研究工作随之展开,随之而来引发编程革命,出现了多种支持反射机制的面向对象语言。
        在计算机科学领域,反射是指一类能够自我描述和自控制的应用。在Java编程语言中,反射是一种强有力的工具,是面向抽象编程一种实现方式,它能使代码语句更加灵活,极大提高代码的运行时装配能力。
        反射机制是Java提供的一项较为高级的功能,它提供了一种动态功能,而此功能的体现在于通过反射机制相关的API就可以获取任何Java类的包括属性、方法、构造器、修饰符等信息。元素不必在JⅧ运行时进行确定,反射可以使得它们在运行时动态地进行创建或调用。反射技术在中间件领域应用得较多。
        尽管反射机制带来了极大的灵活性及方便性,但反射也有缺点。反射机制的功能非常强大,但不能滥用。
        二、Java当中为什么需要反射机制?工作原理是什么?
        要明白为什么需要反射机制,首先就得先清楚两个概念:
        (1)静态编译:在编译时就必须要知道变量得类型才能编译通过,比如C++,Java等编译之前必须清楚的指明数据类型;
        (2)动态编译:显然和上述概念相反,即在编译时不需要立即知道变量的类型,在运行时指明其类型就行。
        三、反射的使用及入门
        获取某个类(Student)的Class对象的三种方法:
        (1)Class c1=Student.class;//通过Student类隐藏的静态变量来获取
        (2)Class c2=Student.getClass();//通过Stduent的getClass()方法
        (3)Class c3=Student.forName("com.tyf.reflect.Student");//com.tyf.reflect.Student为Student类的全类名。