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());
		else
			System.out.println(a.getClass() + "!=" + b.getClass());
		if(a.getClass() == c.getClass())
			System.out.println(a.getClass() + "=" + b.getClass());
		else
			System.out.println(a.getClass() + "!=" + c.getClass());
		if(b.getClass() == c.getClass())
			System.out.println(b.getClass() + "=" + c.getClass());
		else
			System.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();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值