上代码!!!

package com.spring.partise;class A{static{System.out.println("I am A");}
}
public class helllo {public static void main(String[] args) throws Exception {System.out.println("------------得到Class对象的两种方式---------------");A a = new A();Object a1= a.getClass();System.out.println(a1.hashCode());System.out.println("---------------------------");Object name = Class.forName("com.spring.partise.A");System.out.println(name.hashCode());System.out.println(a1==name);}
}

输出:

------------得到Class对象的两种方式---------------
I am A
705927765
---------------------------
705927765
true

总结:

只要你想在运行时使用类型信息,就必须首先获得对恰当的Class对象的引用,Class.forName()就是实现此功能的便捷途径,因为你不需要为了获得Class引用而持有该类型的对象。但是,如果你已经拥有了该类型的对象(A a = new A() ),那就可以通过调用getClass()方法来获取Class引用,这个方法属于Object的一部分。

当然还有第三种得到类的类对象方式就是通过类名.class这里就不测试了,通过类字面常量生成Class对象的引用不仅更简单,而且更安全,因为它在编译时就会受到检查,并且根除了对forName方法的调用所以更高效,可以应用于接口、数组、基本数据类型等,通过该方式创建Class对象的引用时候不会自动地初始化该Class对象。为了使用类而做的准备工作实际包含三个步骤:

  1. 加载,这是由类加载器执行的。该步骤将查找字节码,并从这些字节码中创建一个Class对象。
  2. 链接,在链接阶段将验证类中的字节码,为静态域分配存储空间,并且如果必需的话,将解析这个类创建的对其他类的所有引用。
  3. 初始化,如果该类具有超类,则对其初始化,执行静态初始化器和静态初始化块。

获得Class引用的三种方式?Class.forName()、getClass以及.class的使用相关推荐

  1. 函数参数传递三种方式(传值方式,地址传递,引用传递)

    函数参数传递三种方式(传值方式,地址传递,引用传递) 形参与实参 形参即形式上的参数,对实参的一种抽象类型描述只是声明一个函数能够接受什么类型的实参,而不确定接受的实参的具体内容是什么 实参即传递给函 ...

  2. html中引入css样式表的三种方式,css引用的几种方式是什么?

    HTML怎么引用CSS样式?css引用的几种方式是什么?下面本篇文章就来给大家介绍一下在HTML中引用CSS样式的几种方法,希望对大家有所帮助. 1.行内式 在HTML标签中,使用style属性设置C ...

  3. maven引用公共包_maven怎么 引入(或引用/使用) 自定义(或本地/第三方) jar的三种方式 图文教程-Fun言...

    准备工作: jar包里的源码是: public class RegexUtils { /** * 验证Email * @param email email地址,格式:zhangsan@zuidaima ...

  4. spring配置datasource三种方式

    转自:http://blog.csdn.net/yangyz_love/article/details/8199207 1.使用org.springframework.jdbc.datasource. ...

  5. Workflow 4.0 中三种方式实现workflow的触发调用

    1:使用WorkflowInvoker类中的InVoke静态方法-->WorkflowInvoker.Invoke(myWF); //myWF为自定义的workflow实例 [这种方式可以像一个 ...

  6. spring配置datasource三种方式 数据库连接

    1.使用org.springframework.jdbc.datasource.DriverManagerDataSource  说明:DriverManagerDataSource建立连接是只要有连 ...

  7. 三种方式实现观察者模式 及 Spring中的事件编程模型

    观察者模式可以说是众多设计模式中,最容易理解的设计模式之一了,观察者模式在Spring中也随处可见,面试的时候,面试官可能会问,嘿,你既然读过Spring源码,那你说说Spring中运用的设计模式吧, ...

  8. Python读取文本的三种方式对比

    1.概述 Python有三种读取文本的方式,分别是: read() readline() readlines() 2.三种方式的优缺点分析 2.1 read() 最简单的一种方法,一次性读取文件的所有 ...

  9. Winform中通过NPOI导出Excel的三种方式(HSSFWorkbook,XSSFWorkbook,SXSSFWorkbook)附代码下载

    场景 HSSFworkbook,XSSFworkbook,SXSSFworkbook区别 HSSFWorkbook: 是操作Excel2003以前(包括2003)的版本,扩展名是.xls:导出exce ...

最新文章

  1. iOS开发中用到的一些第三方库
  2. 巧用windows快捷键
  3. [云炬创业基础笔记]第九章企业的法律形态测试3
  4. zookeeper的名词复盘-Stat状态信息
  5. Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since
  6. R7-2 统计字符[2] (10 分)
  7. linux 乌班图 lnmp环境搭建
  8. 安装mysql数据库及问题解决方法
  9. RuntimeError: view size is not compatible with input tensor‘s size and stride
  10. 数据结构——队列操作
  11. 访问 Notes/Domino 数据的定制 DXL 框架
  12. 电信计费系列1-座机计费
  13. 前端面试不用怕!一分钟带你了解es6的解构赋值
  14. 一个中科大差生,8 年程序员生涯感悟(强烈推荐)
  15. 【怎么突破安全狗和360网站卫士的】
  16. 卓朗数字孪生的重要意义
  17. 2021年甘肃省安全员B证考试题及甘肃省安全员B证证考试
  18. 计算机网络 | 网络IP地址
  19. X$BH及V$BH中各字段意义
  20. Tomcat启动startup.bat闪退普遍解决方案

热门文章

  1. idea插件开发(02)---相关概念介绍
  2. 现代程序设计 作业7 - 更加简单的题目
  3. 现代软件工程 作业 4 个人作业
  4. python最常用的编程方式是什么_python常用模块和对象编程
  5. 对比两个字符串相等_字符串匹配问题
  6. iptables 指定网卡_LINUX系统下的IPTABLES防火墙系统讲解(二)实战操作
  7. python中setup函数的用法_python学习之setUp函数和tearDown函数
  8. java类验证和装载顺序_Java类加载机制实现流程及原理详解
  9. matlab 特征值不排序,matlap 代码求解释!从这里开始即可%对特征值进行排序并去掉...
  10. python是谁维护的_Python是维护拆分的更可靠的方法