• java 反射的概念


    反射的引入:

    Object obj = new Student();

                  若程序运行时接收到外部传入的一个对象,该对象的编译类型是Object,但程序又需要调用该对象运行类型的方法:

                  1.若编译和运行类型都知道,使用 instanceof判断后,强转。

                  2.编译时根本无法预知该对象属于什么类,程序只能依靠运行时信息来发现对象的真实信息,这时就必须使用反射了。

                  3.要是想得到对象真正的类型,就得使用反射。

    什么是反射机制?  

            简单的来说,反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有信息。

    反射机制的优点与缺点:  

            为什么要用反射机制?直接创建对象不就可以了吗,这就涉及到了动态与静态的概念,  

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

           动态编译:运行时确定类型,绑定对象。动态编译最大限度发挥了java的灵活性,体现了多态的应用,有以降低类之间的藕合性。  

           一句话,反射机制的优点就是可以实现动态创建对象和编译,体现出很大的灵活性,特别是在J2EE的开发。

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

     

    Class类和Class类实例

     

    Java程序中的各个Java类属于同一类事物,描述这类事物的Java类就是Class类。

    对比提问:众多的人用一个什么类表示?众多的Java类用一个什么类表示?

    人  Person

    Java类  Class

    对比提问: Person类代表人,它的实例对象就是张三,李四这样一个个具体的人,Class类代表Java类,它的各个实例对象又分别对应什么呢?

    对应各个类在内存中的字节码,例如,Person类的字节码,ArrayList类的字节码,等等;

    一个类被类加载器加载到内存中,占用一片存储空间,这个空间里面的内容就是类的字节码,不同的类的字节码是不同的,所以它们在内存中的内容是不同的;

     

     

     

    用类来描述对象,类:描述数据的结构

    用元数据来描述Class,MetaData(元数据):描述数据结构的结构;

    反射就是得到元数据的行为;

     

     

    备注:一个类在虚拟机中只有一份字节码;

  • 相关阅读:
    创建数据库的那些事
    同步、异步、阻塞、非阻塞我的理解
    Openfire MultiUserChat 多用户聊天 消息发送
    JAVA 随机字符串
    OF 同步异步问题的改进
    Openfire S2S 监听与消息处理
    MySQL FEDERATED 存储引擎
    一个S2S通信中的同步、异步问题的解决
    Openfire Monitoring/jinglenodes plugin error
    Java Cache System JCS(一) 使用方法
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11136682.html
Copyright © 2020-2023  润新知