(十一)instanceof 和 getclass 的区别
2024-08-26 02:47:27
判断两个对象是否为同一类型,时常用到getclass 和 instanceof ,而这两个函数又是时常让人混淆。下面从一个例子说明两者的区别:
public class Test_drive { public static void main(String[] args){
A a = new A();
B b = new B(); System.out.println(b.getClass().equals(A.class));
System.out.println(b.getClass().equals(B.class)); System.out.println(b instanceof A);
System.out.println(b instanceof B);
}
}
class A{ }
class B extends A{ }
在这里,上面四个语句分别输出:false , true , true , true
为什么呢?因为,instanceof判断是否是某一类型的实例时,该类型可以是父类或者接口。而getclass 用于判断准确的类型。
同时,在这里必须说明的是,getclass判断的是该变量实际指向的对象的类型(即运行时类型),跟声明该变量的类型无关。即,上面的代码中:
B b = new B();
改为
A a = new B();
各语句结果不变。
最新文章
- JsonFormatter PrettyPrint
- mysql varchar类型使用心得
- 委托(C# 编程指南)
- 一款jQuery实现重力弹动模拟效果特效,弹弹弹,弹走IE6
- 关于table元素的认识
- Javascript引擎单线程机制及setTimeout执行原理说明
- redis神器
- JAVA中调用CMD命令,并输出运行结果
- 现代JVM内存管理方法的发展历程,GC的实现及相关设计概述(转)
- 详细介绍Spring 5的那些新特性与增强
- Github泄露扫描系统
- Visual Stdio 2017增加SVN支持
- Javascript高级编程学习笔记(63)—— 事件(7)鼠标及滚轮事件
- xml模块 增删改查
- 2019微软Power BI 每月功能更新系列——2月Power BI 新功能学习
- Win10系列:JavaScript小球运动示例
- 模拟实现strncpy,strncat,strncmp
- 外观模式face
- selinux 导致ftp文件夹出错~
- cJSON精度丢失问题