實現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

相關文章
相關標籤/搜索