高階JAVA碼農必須搞清楚它們的區別:instanceof、isInstance、isAssignableFrom
轉載自 高階JAVA碼農必須搞清楚它們的區別:instanceof、isInstance、isAssignableFrom
instanceof、isInstance、isAssignableFrom這幾個有沒有接觸過,或者接觸過部分?
定義
a instanceof B
a是B的例項,B是類或者介面、父類或父介面,即B c = a成立。
B.class.isInstance(a)
這個叫動態等價,效果和上面等價,一般用於檢查泛型,如jdk中CheckedMap裡面用到這個檢查Map裡面的key、value型別是否和約定的一樣。
A.class.isAssignableFrom(B)
兩個class的型別關係判斷,判斷B是不是A的子類或子介面
演示
先看看下面的例子就會明白它們各自的用途和含義。
User:使用者基類
PrivateUser:私人使用者子類,繼承User類
PrivateUser priUser = new PrivateUser();
System.out.println(priUser instanceof User);// true
System.out.println(User.class.isInstance(priUser));// true
System.out.println(User.class.isAssignableFrom(PrivateUser.class));// true
System.out.println(PrivateUser.class.isAssignableFrom(User.class));// false
相關文章
- Class.isAssignableFrom與instanceof的區別
- 高階 Java 必須突破的 10 個知識點!Java
- 高階Java必須突破的10個知識點!Java
- java-----instanceof與getClass的區別Java
- 你必須搞清楚的String,StringBuilder,StringBufferUI
- instanceof和typeof的區別
- Java碼農必須掌握的迴圈刪除List元素的正確方法Java
- python的type和isinstance的區別Python
- 高階java必須清楚的概念:原子性、可見性、有序性Java
- JS高階之面試必須知道的幾個點JS面試
- python學習之isinstance與type的區別Python
- java中有哪幾種引用?它們的含義和區別是什麼Java
- 成為Python大牛必須要掌握的高階語法——yieldPython
- 我們必須要了解的Java位運算(不僅限於Java)Java
- 碼農與程式設計師的區別程式設計師
- 程式設計師到高階架構師,必須經歷的三個階段!程式設計師架構
- CISC和RISC是什麼?它們的特點和區別?
- 我們評測了5個主流跨端框架,這是它們的區別跨端框架
- 如何使用CSS建立高階動畫,這個函式必須掌握CSS動畫函式
- ?你必須知道的Java泛型Java泛型
- 對程式、執行緒和協程的理解以及它們的區別執行緒
- 2019年JVM最新面試題,必須收藏它JVM面試題
- 高階Java工程師必備 ----- 深入分析 Java IO (三)Java工程師
- python中isinstance()和type()有什麼區別?如何使用?Python
- 囚徒困境下的996碼農們996
- GO和Python有什麼區別?這十點必須知道!GoPython
- Java 進階必備:HashMap 原始碼分析JavaHashMap原始碼
- python和C語言哪個難?它們的區別是什麼?PythonC語言
- Java必須掌握的Spring常用註解JavaSpring
- 高階Java工程師必備 ----- 深入分析 Java IO (二)NIOJava工程師
- Java 中 instanceof 關鍵字 object instanceof ClassJavaObject
- JAVA高階面試必過知識點彙總Java面試
- [java][效能優化]java高階開發必會的50個效能優化Java優化
- 中高階前端必須瞭解的--陣列亂序前端陣列
- 【科普】碼農是程式設計師嗎?碼農與真正程式設計師的區別是啥?程式設計師
- 你必須知道的Java基礎知識Java
- 如何正確選擇iOS簽名,它們有什麼區別iOS
- Python和Go是什麼?它們之間有什麼區別?PythonGo