实现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

spa

相关文章
相关标签/搜索