美文网首页
反射机制

反射机制

作者: 康俊1024 | 来源:发表于2019-03-01 18:07 被阅读0次

    一、概述

    反射机制是Java动态性之一,而说到动态性首先得了解动态语言。那么何为动态语言?

    动态语言

    动态语言,是指程序在运行时可以改变其结构:新的函数可以引进,已有的函数可以被删除等结构上的变化。比如常见的JavaScript就是动态语言,除此之外Ruby,Python等也属于动态语言,。从动态语言能在运行时改变程序结构或者变量类型上看,Java和C、C++一样都不属于动态语言。但是JAVA却有一个非常突出的与动态相关的机制:反射机制。
    Java通过反射机制,可以在程序运行时加载,探知和使用编译期间完全未知的类,并且可以生成相关类对象实例,从而可以调用其方法或则改变某个属性值。所以JAVA也可以算得上是一个半动态的语言。

    二、反射机制

    概念

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

    应用场合

    在Java程序中许多对象在运行时都会出现两种类型:编译时类型和运行时类型。 编译时的类型由声明对象时实际的类型来决定,运行时的类型由实际赋值给对象的类型决定 如: Person p=new Student();其中编译时类型为Person,运行时类型为Student。
    除此之外,程序在运行时还可能接收到外部传入的对象,该对象的编译时类型为Object,但是程序有需要调用该对象的运行时类型的方法。为了解决这些问题,程序需要在运行时发现对象和类的真实信息。然而,如果编译时根本无法预知该对象和类属于哪些类,程序只能依靠运行时信息来发现该对象和类的真实信息,此时就必须使用到反射了。

    三、Java反射API

    反射API用来生成JVM中的类、接口或者对象的信息。

    • Class类:反射的核心类,可以获取类的属性,方法等信息。
    • Field类:Java.lang.reflec包中的类,表示类的成员变量,可以用来获取和设置类之中的属性值。
    • Method类: Java.lang.reflec包中的类,表示类的方法,它可以用来获取类中的方法信息或者执行方法。
    • Constructor类: Java.lang.reflec包中的类,表示类的构造方法。

    相关文章

      网友评论

          本文标题:反射机制

          本文链接:https://www.haomeiwen.com/subject/dbcjuqtx.html