java getclass_Java–getClass()和.Class的区别

java getclass_Java–getClass()和.Class的区别在程序运行时期动态获得对象类型信息的操作,对比传统编程和反射的区别。传统编程:在编译阶段决定使用的类型反射:动态获得类型每个类都会产生一个对应的Class对象,也就是保存在.class文件。所有类都是在对其第一次使用时,动态加载到JVM的,当程序创建一个对类的静态成员的引用时,就会加载这个类。Class对象仅在需要的时候才会加载。类加载器首先会检查这个类的Class对象是否已被加载过,如果尚未加载…

大家好,又见面了,我是你们的朋友全栈君。

在程序运行时期动态获得对象类型信息的操作,对比传统编程和反射的区别。

传统编程:在编译阶段决定使用的类型

反射:动态获得类型

每个类都会产生一个对应的Class对象,也就是保存在.class文件。所有类都是在对其第一次使用时,动态加载到JVM的,当程序创建一个对类的静态成员的引用时,就会加载这个类。Class对象仅在需要的时候才会加载。

类加载器首先会检查这个类的Class对象是否已被加载过,如果尚未加载,默认的类加载器就会根据类名查找对应的.class文件。

获得Class对象的三种方式

Object的getClass()

静态加载.class

通过Class的静态方法forName(String className),最为常用

反射通俗理解是把类中各个组成部分映射成一个对象。加载过程:

反射加载类,JVM会检测是否有.class类文件

如果没有,则会把.class文件加载从磁盘中加载进内存

自动创建一个Class对象,通过这个对象可以得到要创建的对象实例

getClass和.Class区别?

我们一般所使用的对象都直接或间接继承自Object类,getClass()是Object类的方法,它可以获得一个实例的类型类。

类型类指的是代表一个类型的类,因为一切皆是对象,类型也不例外,在Java使用类型类来表示一个类型。所有的类型类都是Class类的实例。

public static void main(String[] args) {

ClassA a=new ClassA();

System.out.println(a.getClass());

System.out.println(ClassA.class);

}

对象a是A的一个实例,ClassA是某一个类,在Java中表示一个特定类型的类型类可以用“类型.class”的方式获得,因为a.getClass()获得是ClassA的类型类,也就是ClassA.class。所以ClassA.class和a.getClass()是一样的。

类型类是一一对应的,父类的类型类和子类的类型类是不同的,因此,假设ClassA是ClassB的子类,那么ClassB.class和a.getClass是不一样的。

getClass方法,有多态能力,运行时可以返回子类的类型信息,

.class是没有多态的,是静态解析的,编译时可以确定类型信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148416.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 大话数据结构PDF原文内容分享[通俗易懂]

    大话数据结构PDF原文内容分享[通俗易懂]大话数据结构为超级畅销书《大话设计模式》作者程杰潜心三年推出的扛鼎之作!以一个计算机教师教学为场景,讲解数据结构和相关算法的知识。通篇以一种趣味方式来叙述,大量引用了各种各样的生活知识来类比,并充分运用图形语言来体现抽象内容,对数据结构所涉及到的一些经典算法做到逐行分析、多算法比较。与市场上的同类数据结构图书相比,本书内容趣味易读,算法讲解细致深刻,是一本非常适合自学的读物。获取方式提取码:8i5k目录第1章数据结构绪论1.1开场白1.2你数据结构怎么学的?1.3数据结构起源1.

    2022年6月24日
    33
  • 矩阵等价-相似-合同

    矩阵等价-相似-合同1.矩阵等价2.矩阵相似3.矩阵合同矩阵等价定义如果矩阵A经过有限次初等行变换变成矩阵B,就成矩阵A与B行等价。如果矩阵A经过有限次初等列变换变成矩阵B,就成矩阵A与B列等价。如果矩阵A经过有限次初等变换变成矩阵B,就称矩阵A与B等价。性质反身性:A~A对称性:若AB,则BA传递性:若AB,BC,则A~C推论:有两个m×n阶矩阵A和B,如果这两个矩阵满足B=QAP(P是n×n阶可逆矩阵,Q是m×m阶可逆矩阵),那么这两个矩阵之间是等价关系。r(A)=r(B),且A与B为同型矩阵。

    2025年6月27日
    2
  • pycharm怎么逐步调试_pycharm的debug失效

    pycharm怎么逐步调试_pycharm的debug失效前言Debug调试,是一项学习编程人员的重要技能。只有当你学会debug了以后,才可以正确的知道程序的走向流程是如何的,今天就来给大家介绍一下pycharm中的debug功能!debug的前世在正式讲解之前,先来了解下debug这个词的由来,就像我们初学Python时,先要了解下它历史的由来。1937年,美国青年霍华德·艾肯找到IBM公司为其投资200万美元研制计算机,第一台成品…

    2022年8月26日
    9
  • phpstorm 2021.11 激活(JetBrains全家桶)

    (phpstorm 2021.11 激活)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月29日
    122
  • 模糊控制器matlab仿真_有关bp神经网络Matlab的书

    模糊控制器matlab仿真_有关bp神经网络Matlab的书以下多套系统源码:1、MATLAB二级倒立摆三级倒立摆(在MATLAB下的二级倒立摆、三级倒立摆的仿真。内有所有需要的m文件)2、倒立摆matlab代码3、神经网络倒立摆控制(利用matlab对倒立摆的仿真,效果十分不错)4、二级倒立摆模型(这是一个演示直线二级倒立摆的matlab运行模型,这个模型能够根据仿真数据动画演示出二级倒立摆的运动情况。)5、倒立摆源码(倒立摆源码程序,注释很详细,是学习倒立摆原理,PID算法很好的参考资料。代码书写规范,注释详细。)6、二级倒立摆神经网络控制7

    2022年8月18日
    6
  • zencart模板如何设计「建议收藏」

    zencart模板如何设计「建议收藏」ZenCart的模板设计比较复杂,需要一定的时间来熟悉。一旦你了解了它的结构,就会慢慢习惯了。  首先要阅读常见问答部分的:如何添加、制作新模板。ZenCart的设计没有什么特别,与以前设计HTML页面是一样的。只是整个页面分成了好几个部分,并加入了PHP代码。  通常,页面分为页眉(header),页脚(footer),边框(sideboxes)。所以设计页面的时候

    2022年7月27日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号