zoukankan      html  css  js  c++  java
  • Class.forName、Class.class(属性)、getClass()的区别

    1、出现的时期不同:Class.forName()在运行时加载;Class.class和getClass()是在编译器加载
    2、Class.class只是在编译时用来存放类的相关信息,并没有实例化对象;而getClass()既实例化了对象,又存放了类信息
    3、例:
       Test t=new Test();
       Class c=t.getClass();
       
       Class c=Class.class;

       Class c=Class.forName("Test");



    package com.hsia.util;

    public class Test {

        Test(){}
        
        private String test;
        
        public String getTest() {
            return test;
        }

        public void setTest(String test) {
            this.test = test;
        }
        
        public static void f(Test t)
        {
            System.out.print(t);
        }

        public static void main(String[] arg) throws Exception
        {    
            System.out.println(Test.class);
            System.out.println(new Test());
            System.out.println(Test.class.newInstance());
      
            Class clas = null;
            try {
              clas = Class.forName("Test");        //此处必须为完整路径  com.hsia.util.Test
              System.out.println(clas);
            } catch (ClassNotFoundException ex) {
              // handle exception case
            }
            System.out.println(clas);
            
            Test t=new Test();
            System.out.println(t.getClass().newInstance());
            System.out.println(t);
            
            f(t);
        }
    }
    输出结果:
    第一次输出:
    class com.hsia.util.Test
    com.hsia.util.Test@1df38fd
    com.hsia.util.Test@16a786
    null
    com.hsia.util.Test@1efb836
    com.hsia.util.Test@126e85f
    com.hsia.util.Test@126e85f

    第二次输出:
    class com.hsia.util.Test
    com.hsia.util.Test@de6ced
    com.hsia.util.Test@c17164
    null
    com.hsia.util.Test@61de33
    com.hsia.util.Test@14318bb
    com.hsia.util.Test@14318bb

    结论:
    Test.class:输出类名
    new Test():输出类实例的内存物理地址
    Test.class.newInstance():输出类实例的内存物理地址
    t.getClass().newInstance():输出类实例的内存物理地址
    t:也是类实例内存地址

  • 相关阅读:
    Linux下打包发布Qt应用程序
    嵌入式中的BSP---BSP到底是什么?
    (转)Spring 工具类 ConfigurationClassParser 分析得到配置类 -- springboot一样处理过程
    React Hooks之useState、useEffect使用
    数组排序多种方法汇总
    封装判断浏览器是否是IE浏览器
    封装addEventListener,removeEventListener指定元素添加事件及兼容问题js
    js判断是否超过几行
    react日期格式化组件
    Windows smynesc免费经典儿时小游戏分享给大家
  • 原文地址:https://www.cnblogs.com/yangwenbin/p/4344294.html
Copyright © 2011-2022 走看看