实现instanceof关键字

如果用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

原文地址:https://www.cnblogs.com/Ycheng/p/7168995.html