关于java中getClass()和getSuperClass()的讲解

为了讲解这个问题,我们先来看一下下面的代码:

 

package com.yonyou.test;import java.util.Date;class Test extends Date{private static final long serialVersionUID = 1L;public static void main(String[] args) {new Test().print();}public void print(){System.out.println("当前运行类的名字为:"+super.getClass().getName());System.out.println("当前运行类的名字为:"+this.getClass().getName());System.out.println("当前运行类的继承的父类的名字为:"+this.getClass().getSuperclass().getName());}
}

上面代码的输出结果什么样的呢?
 也许你需要上机调试一下,因为有些不确定,下面我们就一起来分析一下:

上机调试后发现运行的结果为:

当前运行类的名字为:com.yonyou.test.Test
当前运行类的名字为:com.yonyou.test.Test
当前运行类的继承的父类的名字为:java.util.Date

先来分析一下getClass()究竟返回的是什么:

插卡jdk的源码可以看到如下内容:

/**
* Returns the runtime class of this {@code Object}. The returned
* {@code Class} object is the object that is locked by {@code
* static synchronized} methods of the represented class.
*
* <p><b>The actual result type is {@code Class<? extends |X|>}
* where {@code |X|} is the erasure of the static type of the
* expression on which {@code getClass} is called.</b> For
* example, no cast is required in this code fragment:</p>
*
* <p>
* {@code Number n = 0; }<br>
* {@code Class<? extends Number> c = n.getClass(); }
* </p>
*
* @return The {@code Class} object that represents the runtime
* class of this object.
* @see <a href="http://java.sun.com/docs/books/jls/">The Java
* Language Specification, Third Edition (15.8.2 Class
* Literals)</a>
*/
public final native Class<?> getClass();

一定要看上面注释中的蓝色部分的英文注释,意思是返回对应的当前正在运行时的类所对应的对象,那么super可以理解为Test的父类Date,

那么请问当前Date类正在运行时的对象是谁?没错,就是其子类Test,所以this.getClass(0.getName()和super.getClass().getName()返回的

都是com.yonyou.test.Test

再看看getSuperClass()的源码

/**
* Returns the <code>Class</code> representing the superclass of the entity
* (class, interface, primitive type or void) represented by this
* <code>Class</code>. If this <code>Class</code> represents either the
* <code>Object</code> class, an interface, a primitive type, or void, then
* null is returned. If this object represents an array class then the
* <code>Class</code> object representing the <code>Object</code> class is
* returned.
*
* @return the superclass of the class represented by this object.
*/
public native Class<? super T> getSuperclass();

 

没错,这里蓝色标注的才是返回当前实体类的父类。所以要返回当前类的父类的话,请使用下面这中方式

super.getClass().getSuperClass().getName();

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449853.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

期权回测框架设计思路

期权回测&#xff0c;博主已经研究了很长时间&#xff0c;也接触了不少平台&#xff0c;如真格&#xff0c;以及这位博主提供的思路&#xff08;https://blog.csdn.net/luoqingyong/article/details/107523930&#xff09;&#xff0c;利用backtrader进行期权回测。确实国内做期…

UVA815

这道题主要学到的就是数据结构的组织&#xff0c;一些需要从小到大排列的东西&#xff0c;这些东西还有对应的东西。这个时候使用map可以解决 下面贴出代码。其中所使用的思想&#xff0c;估计这个东西是没法学的&#xff0c;这就只能是灵感 //这是什么吉尔题&#xff0c;题意都…

我对应聘者的面试原则

最近参与了几次单位招聘面试工作&#xff0c;在面试工程师时&#xff0c;我是用我的分层准则指导与候选人的交流内容&#xff0c;以确定他的能力层次是否达到我所期望的。大体上软件工程师可以分为三大层次&#xff0c;分别是技术知识积累层、掌握设计方法层以及运用开发方法论…

rsync:基本命令和用法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 2.1 说在前面的话 rsync官方网站: https://www.samba.org/ftp/rsync/rsync.html rsync是可以实现增量备份的工具。配合任务计划&#…

Java常见排序算法之堆排序

在学习算法的过程中&#xff0c;我们难免会接触很多和排序相关的算法。总而言之&#xff0c;对于任何编程人员来说&#xff0c;基本的排序算法是必须要掌握的。 从今天开始&#xff0c;我们将要进行基本的排序算法的讲解。Are you ready&#xff1f;Let‘s go~~~ 1、排序算法的…

python量化数据处理小细节2

处理数据主要使用的是DataFrame格式&#xff0c;偶尔也会有list格式。 首先定位寻找数据&#xff1a;主要为loc&#xff0c;iloc 创建DataFrame&#xff1a; df pd.DataFrame([1,2,3,4,5],index [a,b,c,d,e],columns[aa])或 datapd.DataFrame(np.arange(16).reshape(4,4),i…

python编码问题

参考&#xff1a;https://blog.csdn.net/qq_33692803/article/details/81321340 注意区分系统默认编码和本地默认编码、编码和解码的区别转载于:https://www.cnblogs.com/jianglinliu/p/10418437.html

软件工程师所需掌握的“终极技术”是什么?

最近&#xff0c;我在微博上看到程序员邹欣老师发的一条微博 — “不少大学同学都有一个想法&#xff1a;先做几年技术&#xff0c;然后做管理&#xff1b;也有一些同学说&#xff1a;我技术不行&#xff0c;希望直接找到一个管理的工作&#xff0c;就像PM那样。请看 PM 需要什…

linux中项目部署和日志查看

1 查找进程 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 ps -ef | grep java 查看所有关于java的进程 root 17540 1 0 2009 ? 01:42:27 /usr/java/jdk1.5.0_1…

dspmq dspmqver command not found(dspmq命令找不到,dspmqver主安装目录设置不正确

[rootrhv6-64b ~]# su - mqm -bash-4.1$ dspmq -bash: dspmq: command not found&#xff08;dspmq命令找不到&#xff09; -bash-4.1$ dspmqver&#xff08;dspmqver主安装目录设置不正确&#xff09; AMQ8594: WebSphere MQ commands are no longer available in /usr/bin. I…

lambda表达式与委托与线程初步谈论-基于刘铁锰视频观后操作

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;//线程 using System.Threading;//引用线程方法namespace ConsoleApplication2 {class Program{static void Main(string[] args){//委托详解//Func返回…

2020-11-21

获取数据后&#xff0c;需要对数据进行合并&#xff0c;通常是日期&#xff0c;也有对相同公司进行合并 下面就研究数据合并的常用方法&#xff1a; 目录appendmergeon属性how属性&#xff08;inner&#xff0c;outer&#xff0c;left &#xff0c; right&#xff09;indicato…

走技术线,还是技术管理线?

最近因为要给刚毕业的学生做一次演讲&#xff0c;所以就职业发展这类话题先以写博客的形式做一些思考&#xff0c;希望届时能给同学们带来质量更高的内容。我在《驾驭你的“职场布朗运动”》一文中谈了25条职场感悟并提出了“走技术线&#xff0c;还是技术管理线&#xff1f;”…

[Nikon D80]樱花盛开的校园

花开花落&#xff0c;阳春三月&#xff0c;随身背着相机在学校里游走&#xff0c;不断的寻找视角。知道自己拍的不好&#xff0c;总觉得自己拍的片有各式各样的缺陷&#xff0c;也许这就是大师与学徒的区别吧。用好手头的装备&#xff0c;出好片&#xff0c;锻炼Visual Effect …

「LG2664 树上游戏」

题目 这真是一道神仙的一批的题目 定义\(s(i,j)\)表示从点\(i\)到点\(j\)经过的颜色数量 设 \[sum_i\sum_{j1}^ns(i,j)\] 求出所有的\(sum_i\) 考虑点分治 对于一个点我们用两种方式来统计其答案 这个点作为分治重心时&#xff0c;分值区域内所有点到这个点贡献这个点不是分治重…

DUBBO 使用问题记录

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 官方ISSUE参考 https://github.com/alibaba/dubbo/issues 注册中心ZookeeperRegistry.doSaveProperties warn 2014-10-1419:56:51WARN …

真格量化学习处理——几个功能小函数

真格这周是学习使用了不少,功能算是很不错,但在做的时候也发现了一个问题: 数据缺失:我在做回测,要求获取每天的delta值,并从中筛选条件值时,报错,显示无数据。不得不使用pass,影响我的回测连贯性。 现在开始讲下,我做的几个功能函数: 算起来,挺烦的,就是各种细节…

软件技术发展的驱动力

软件产品的终极目标是为了实现用户需求从而满足人们的需要。也正是为了不断满足人们的需要使得软件行业不断向前发展。比如&#xff0c;新的算法&#xff08;MPEG-1、MPEG-2、MPEG-4、H.264、……&#xff09;等的出现都在当时为了满足不同的需要而被发明。然而&#xff0c;人们…

The Model Driven Software Network

国外的一个模型驱动软件开发的讨论社区&#xff0c;The Model Driven Software Network这个社区讨论的都是模型驱动开发相关的话题&#xff0c;虽然建立不久&#xff0c;但加入的人越来越多&#xff0c;建立群组的是Mark Dalgarno以下是一些讨论: Textual v Graphical models W…

无敌简单快速的文件服务器sgfs

前言 想要构建一个Linux文件服务器&#xff1f;看看下面几个要求是不是你想要的&#xff1f; 1、只需要单节点部署就够了 2、部署启动简单&#xff0c;下载之后&#xff0c;一键启动&#xff0c;一键关闭 3、不需要任何其他的依赖安装&#xff0c;而且运行时占用内存资源少 4、…