instanceof、isInstance、==、equals判断Class是否相等

举报
cxuan 发表于 2021/07/15 02:24:34 2021/07/15
【摘要】 instanceof 关键字 和 isInstance的用法相同 现在有一个类Base public class Base { } 还有一个类Derived继承于Base public class Derived extends Base{ } 再写一个类判断上述条件下两者是否相等 public class FamilyVsExactType { stati...

instanceof 关键字 和 isInstance的用法相同

现在有一个类Base

public class Base {

}

public class Derived extends Base{

}

public class FamilyVsExactType {

	static void test(Object x) {
		System.out.println("Testing x of type=" + x.getClass());
		System.out.println("x instanceof Base=" + (x instanceof Base));
		System.out.println("x instanceof Derived=" + (x instanceof Derived));
		System.out.println("Base.isInstance(x)=" + Base.class.isInstance(x));
		System.out.println("Derived.isInstance(x)=" + Derived.class.isInstance(x));
		System.out.println("x.getClass() == Base.class=" + (x.getClass() == Base.class));
		System.out.println("x.getClass() == Derived.class=" + (x.getClass() == Derived.class));
		System.out.println("x.getClass.equals(Base.class)=" + (x.getClass().equals(Base.class)));
		System.out.println("x.getClass.equals(Derived.class)=" + (x.getClass().equals(Derived.class))); } public static void main(String[] args) {
		test(new Base());
		test(new Derived());
	}
}

== 和 equals比较的实际的Class类,没有考虑继承,instanceof 和 isInstance考虑继承

Testing x of type=class com.my.rest.six.Base

x instanceof Base=true

x instanceof Derived=false

Base.isInstance(x)=true

Derived.isInstance(x)=false

x.getClass() == Base.class=true

x.getClass() == Derived.class=false

x.getClass.equals(Base.class)=true

x.getClass.equals(Derived.class)=false

Testing x of type=class com.my.rest.six.Derived

x instanceof Base=true

x instanceof Derived=true

Base.isInstance(x)=true

Derived.isInstance(x)=true

x.getClass() == Base.class=false

x.getClass() == Derived.class=true

x.getClass.equals(Base.class)=false

x.getClass.equals(Derived.class)=true


引用自 《thinking in Java》第14章


文章来源: cxuan.blog.csdn.net,作者:程序员cxuan,版权归原作者所有,如需转载,请联系作者。

原文链接:cxuan.blog.csdn.net/article/details/79090322

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。