首页 > 技术文章 > 实现instanceof关键字

Ycheng 2017-07-14 11:00 原文

如果用Java的伪代码来表现Java语言规范所描述的运行时语义,会是这样:
// obj instanceof T
boolean result;
if (obj == null) {
  result = false;
} else {
  try {
      T temp = (T) obj; // checkcast
      result = true;
  } catch (ClassCastException e) {
      result = false;
  }
}

 

用中文说就是:如果有表达式 obj instanceof T ,那么如果 obj 不为 null 并且 (T) obj 不抛 ClassCastException 异常则该表达式值为 true ,否则值为 false 。
注意这里完全没提到JVM啊Class对象啊啥的,没有展现出如何从代码的角度获得T是一个什么类型。另外要注意 instanceof 运算符除了运行时语义外还有部分编译时限制,详细参考规范。


详细部分可参见:
作者:RednaxelaFX
链接:https://www.zhihu.com/question/21574535/answer/18998914

推荐阅读