• 反射_1.深入理解Class


    1.Class类是什么?

       摘自张孝祥老师PPT:每一个JAVA类都属于同一类事物,描述这类事物的java类就是Class

    2.获取类Class的三种方式?

    String str = "123";
    // 1.使用对象的getClass方法获取
    Class c1 = str.getClass();
    // 2.使用类.class获取
    Class c2 = String.class;
    // 3.使用Class类自带的方法,传递类路径加载字节码到内存
    Class c3 = null;
    try {
         c3 = Class.forName("java.lang.String");
    } catch (ClassNotFoundException e) {
       e.printStackTrace();
    }
    System.out.println(c1 == c2);
    System.out.println(c1 == c3);

    控制台结果:

      true
      true

    3.这三种方式有什么异同吗?

       getClass()方式和xxx.class方式获取都是通过从jvm内存已有的类字节码中创建对象

      而Class.forName("java.lang.String")是通过先去硬盘加载class字节码文件到内存,再从类字节码中创建对象。

      相当于步骤多了一步。

    4.常用方法有哪些?

       

    c1.newInstance();//创建一个对象
    c1.getName();//得到该类对象的名字(即全路径:es:java.lang.String)
    c1.getSimpleName();//得到类名(es:String)
    c1.getSuperclass();//得到父类

      -_-就先写这么多,其它看看API吧,都很简单

    5.Person p1=new Student();其中Student是Person的子类,请问p1.getClass()得到的是Person.class还是Student.class呢?

      答:是Student.class

    --------------------------------------------------------------------------------------------------------------------------------------------------

        

    --------------------------------------------------------------------------------------------------------------------------------------------------  

     6.Integer.class和int.class是同一个对象吗?为什么?

     System.out.println(Integer.class==int.class); // 结果为false;

     不是同一个对象,因为他们不属于同一个类。

     附图:

      

  • 相关阅读:
    html 入门 "地表最强"干货 你值得拥有
    python信号量
    死锁 与 递归锁
    互斥锁
    进程之间的通讯
    进程与多道技术
    进程对象常用属性
    开启子进程的方式2
    牛客多校赛2K Keyboard Free
    省选刷题小记 (06~10)
  • 原文地址:https://www.cnblogs.com/dingjm01/p/8317211.html
Copyright © 2020-2023  润新知