首页资讯 • 正文

Java instanceof关键字是如何实现的?

发布时间:

面试的时候碰到这个问题,面试官希望能从底层来分析一下。我当时知道的只是在同一个类加载器加载的前提下,使用其生成的对象,去比较才有意义。不同的类加载器加载的类生成对象,互相instanceof返回false。但我不晓得,底层是如何实现的。

Java里的instanceof关键字,在运行的时候,其实就是执行Java VM的instanceof字节码,所以要说这个instanceof的原理,看Java虚拟机规范是最权威的。下图是对Java虚拟机关于这个字节码的截图,

规范里明确说了,当S instanceof T时,S必须是Class T类型的对象,或者是T这个类的子类也可以,否则就会返回false。

当T不是一个类Class,而是一个接口 interface时,就要求S必须是实现了接口T的某个类的对象即可,否则就返回false。

当然instanceof还有其它的用法,比如T是数组时的情形,再比如S和T都是接口类型的判断,这几个不常用的就不展开讨论了,有兴趣的可以去看看Java虚拟机规范。

相关文章Related

相关文章Related

返回栏目>>

首页   |   网站地图

Copyright © 2002-2019 天线网,三星,粉刺,纸箱,公路 版权所有