我们知道在Java中一切都是对象,我们一般所使用的对象都直接或间接继承自Object类。Object类中包含一个方法名叫getClass,利用这个方法就可以获得一个实例的类型类。

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

public class GetClassTest
{public static void main(String[] args){A a = new A();B b = new B();A c = new B();A d = new A();System.out.println(a.getClass() + "---" + a.getClass().hashCode());System.out.println(b.getClass() + "---" + b.getClass().hashCode());System.out.println(c.getClass() + "---" + c.getClass().hashCode());System.out.println(d.getClass() + "---" + d.getClass().hashCode());System.out.println("******");if(a.getClass() == b.getClass())System.out.println(a.getClass() + "=" + b.getClass());elseSystem.out.println(a.getClass() + "!=" + b.getClass());if(a.getClass() == c.getClass())System.out.println(a.getClass() + "=" + b.getClass());elseSystem.out.println(a.getClass() + "!=" + c.getClass());if(b.getClass() == c.getClass())System.out.println(b.getClass() + "=" + c.getClass());elseSystem.out.println(b.getClass() + "!=" + c.getClass());System.out.println("******");a.printTest();a.printTest2();a.printTest3();}
}class A
{public void printTest(){System.out.println(super.getClass());}public void printTest2(){System.out.println(this.getClass());}public void printTest3(){System.out.println(getClass().getSuperclass());}
}class B extends A
{}

编译并运行,见图1所示。

图1

分析图1,

class A---366712642
       class B---1829164700
       class B---1829164700
       class A---366712642
可知,每个类只对应一个Class对象。

class A!=class B
       class A!=class B
       class B=class B
       ******
       class A
       class A
       class java.lang.Object
可知,getClass()返回的是对象运行时的类型,与this,super等关键字的引用无关,所以getClass(),this.getClass()和super.getClass()返回的都是"Class A"。如果想要得到父类的名称,应该用如下代码:

getClass().getSuperclass();

Java中的getClass()方法相关推荐

  1. Java中的getClass方法

    getClass方法 Object getClass() 方法用于获取对象的运行时对象的类. 返回引用中存储的实际对象的类型. 应用:通常用于判断两个引用中实际存储对象一致. //新建一个学生类 pu ...

  2. java中的getClass()方法的详解

    getClass()返回运行时的类: 1.示例代码: package com.dbzhang.demo4;public class Person {int id;private String name ...

  3. Java中重写equals()方法时注意点

    Java中重写equals()方法时注意点 一直说,重写一个对象的equals()方法时我们必须重写HashCode()方法,但是如果我们不重写呢?会有什么影响呢? 首先看一下,什么情况下我们需要重写 ...

  4. Java 中的某些方法为什么要求传入一个 Class 对象

    Java 中的某些方法为什么要求传入一个 Class 对象   在 Java 中,某些方法要求传入一个 Class 对象,这能保证该方法能返回一个正确的类型的对象,从而免除返回后的强制类型转换.比如 ...

  5. java中equals函数所在的类,重写Java中的equals方法介绍

    Java中,只有8种基本类型不是对象,例如:4种整形类型(byte, short, int,long),2种浮点类型(flout, double),boolean, char不是对象,其他的所有类型, ...

  6. Java中获得了方法名称的字符串,怎么样调用该方法

    问题: Java中获得了方法名称的字符串,怎么样调用该方法 如果我有以下两个变量 Object obj; String methodName = "getName"; 在不知道ob ...

  7. Java中的toString()方法

    Java中的toString()方法 目录 Java中的toString()方法 1.    对象的toString方法 2.    基本类型的toString方法 3.    数组的toString ...

  8. java中this.getclass()_详解java中this.getClass()和super.getClass()的实例

    详解java中this.getClass()和super.getClass()的实例 前言: 遇到this.getClass()和super.getClass()的返回值感到疑惑,经过探索豁然开朗. ...

  9. java中getclass_详解java中this.getClass()和super.getClass()的实例

    详解java中this.getClass()和super.getClass()的实例 前言: 遇到this.getClass()和super.getClass()的返回值感到疑惑,经过探索豁然开朗. ...

最新文章

  1. python相比c语言更动态_Python金融大数据分析
  2. datagridview后台获取选中行的值的几种方式
  3. (转) Unity3D 使用Texturepacker打包工具制作NGUI(Atlas)图集
  4. java压缩/解压缩zip格式文件
  5. 如何基于MindSpore实现万亿级参数模型算法?
  6. linux5怎么删除目录,Linux中目录的创建与删除命令使用说明
  7. ASP.NET MVC3禁用页面请求验证
  8. 开始学习Linux的一些建议
  9. 回溯算法与八皇后问题
  10. python避障小车_基于树莓派的超声波避障小车
  11. 广州规划新增30条地铁 来看看线路图?
  12. 合成孔径雷达影像(SAR图像)变化检测深度学习研究方法
  13. C艹入门 -> 入土
  14. oracle的单引号和双引号的深入举例分析
  15. kettle能否自动建表_Kettle、Python实现报表自动化
  16. POJ 1129 Channel Allocation(四色定理)
  17. 一些事,只配当回忆.一些人,只能做过客。既不回头 何必不忘 既然无缘 何必誓言 。这个世界.那么脏.谁有资格.说悲伤。...
  18. 在uni-app的textarea中输入纯数字或者英文不换行的问题
  19. TPshop项目-功能测试(1)
  20. Ant [BOOK]

热门文章

  1. 推荐广告之-MLR学习
  2. vue 父子组件传值
  3. 漏洞利用exploit ——跳板技术 静待春暖花开之时,你我相见 听你说一声 好久不见
  4. [BJDCTF2020]认真你就输了——学习记录
  5. 抽丝剥茧看时间序列预测
  6. 使用对抗样本改善图像分类性能
  7. 四元数左乘右乘_理解四元数
  8. MNIST数据集提取图片和标注信息
  9. LaTex数学公式和符号
  10. TF31002问题解决办法