• 反射 笔记


    <1> 定义:Java程序中的各个java类属于同一类事物,描述这类事物的java类就是Class

    <2> 对比提问:众多的人用一个什么类表示?众多的java类用一个什么类表示?

       人   Person

          Java类     Class

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

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

    一个类被类加载器加载到内存中,占用一片存储空间,这个空间里面的内容就是类的字节码,不同类的字节码是不同的,所以他们在内存中是不同的,这一个个的空间可分别用一个个的对象来表示,这些对象具有相同的类型,这个类型是什么呢?

    <4> 如何得到各个字节码对应的实例对象(Class类型)

    1>类名.class  例如  System.class

    2>对象.getClass()   例如  new Date().getClass()

    3>Class.forName(“类名”)  例如  Class.forName(“java.lang.String”)

    面试题该方法有两种情况  该类的作用是,加载字节码

    1,该类的字节码已经加载到内存中来了,要使用它只需要找到它,返回就行了

    2在jvm里还没有该字节码,于是就用类加载器去加载,加载进来后就将那份字节码缓存起来,forName方法返回加载进来的字节码

    <5> 九个预定义Class实例对象

       参看Class.isPrimitive方法的帮助

       Int.class == Integer.TYPE

    <6> 数组类型的Class实例对象

         Class.isArray()

    总之,只要是在源程序中出现的类型都有各自的Class实例对象,例如int[] ,void….

    15  反射

    <1>   反射就是把java类中的各种成分映射成相应的java类。例如,一个java类中用一个Class类的对象来表示,一个类中的组成部分:成员变量,方法,构造方法,包等等信息也用一个个的java类来表示,就像汽车是一个类,汽车中的发动机,变速箱等等也是一个个的类。表示java类的Class类显然要提供一系列的方法,来获得其中的变量,方法,构造方法,修饰符,包等信息,这些信息就是用相应的实例对象来表示,他们是Field,Method,Contructor,Package等等

    <2>   一个类中的每个成员都可以用相应的反射API类的一个实例对象来表示,通过调用Class类的方法可以得到这些实例对象后,得到这些实例对象后有什么用呢?怎么用?这正是学习和应用反射的要点。

  • 相关阅读:
    python类变量与成员变量,及模块中类变量共享
    python制作GUI界面---搞定软件界面编程
    pycharm运行PyQt5出现错误This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
    pycharm安装包下载慢的问题解决
    DNS隧道实验
    关于虚拟机win Server 2003只能打开百度网页其他网页都打不开??
    Python如何将决策树dot文件转化为png文件
    如何将虚拟机win7成功联网
    关于虚拟机win2003忘记登录密码(待解决)
    虚拟机kali忘记密码后问题解决&&kali用桥接模式成功联网
  • 原文地址:https://www.cnblogs.com/siashan/p/3840951.html
Copyright © 2020-2023  润新知