Java中的getClass()方法
我们知道在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()方法相关推荐
- Java中的getClass方法
getClass方法 Object getClass() 方法用于获取对象的运行时对象的类. 返回引用中存储的实际对象的类型. 应用:通常用于判断两个引用中实际存储对象一致. //新建一个学生类 pu ...
- java中的getClass()方法的详解
getClass()返回运行时的类: 1.示例代码: package com.dbzhang.demo4;public class Person {int id;private String name ...
- Java中重写equals()方法时注意点
Java中重写equals()方法时注意点 一直说,重写一个对象的equals()方法时我们必须重写HashCode()方法,但是如果我们不重写呢?会有什么影响呢? 首先看一下,什么情况下我们需要重写 ...
- Java 中的某些方法为什么要求传入一个 Class 对象
Java 中的某些方法为什么要求传入一个 Class 对象 在 Java 中,某些方法要求传入一个 Class 对象,这能保证该方法能返回一个正确的类型的对象,从而免除返回后的强制类型转换.比如 ...
- java中equals函数所在的类,重写Java中的equals方法介绍
Java中,只有8种基本类型不是对象,例如:4种整形类型(byte, short, int,long),2种浮点类型(flout, double),boolean, char不是对象,其他的所有类型, ...
- Java中获得了方法名称的字符串,怎么样调用该方法
问题: Java中获得了方法名称的字符串,怎么样调用该方法 如果我有以下两个变量 Object obj; String methodName = "getName"; 在不知道ob ...
- Java中的toString()方法
Java中的toString()方法 目录 Java中的toString()方法 1. 对象的toString方法 2. 基本类型的toString方法 3. 数组的toString ...
- java中this.getclass()_详解java中this.getClass()和super.getClass()的实例
详解java中this.getClass()和super.getClass()的实例 前言: 遇到this.getClass()和super.getClass()的返回值感到疑惑,经过探索豁然开朗. ...
- java中getclass_详解java中this.getClass()和super.getClass()的实例
详解java中this.getClass()和super.getClass()的实例 前言: 遇到this.getClass()和super.getClass()的返回值感到疑惑,经过探索豁然开朗. ...
最新文章
- python相比c语言更动态_Python金融大数据分析
- datagridview后台获取选中行的值的几种方式
- (转) Unity3D 使用Texturepacker打包工具制作NGUI(Atlas)图集
- java压缩/解压缩zip格式文件
- 如何基于MindSpore实现万亿级参数模型算法?
- linux5怎么删除目录,Linux中目录的创建与删除命令使用说明
- ASP.NET MVC3禁用页面请求验证
- 开始学习Linux的一些建议
- 回溯算法与八皇后问题
- python避障小车_基于树莓派的超声波避障小车
- 广州规划新增30条地铁 来看看线路图?
- 合成孔径雷达影像(SAR图像)变化检测深度学习研究方法
- C艹入门 -> 入土
- oracle的单引号和双引号的深入举例分析
- kettle能否自动建表_Kettle、Python实现报表自动化
- POJ 1129 Channel Allocation(四色定理)
- 一些事,只配当回忆.一些人,只能做过客。既不回头 何必不忘 既然无缘 何必誓言 。这个世界.那么脏.谁有资格.说悲伤。...
- 在uni-app的textarea中输入纯数字或者英文不换行的问题
- TPshop项目-功能测试(1)
- Ant [BOOK]