高階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
相關文章
- java 型別資訊 instanceof 和 isInstance區別Java型別
- Class.isAssignableFrom與instanceof的區別
- Java 高階特性之 instanceofJava
- 高階 Java 必須突破的 10 個知識點!Java
- 高階Java必須突破的10個知識點!Java
- java-----instanceof與getClass的區別Java
- Java碼農必須掌握的迴圈刪除List元素的正確方法Java
- 高階java必須清楚的概念:原子性、可見性、有序性Java
- JS高階之面試必須知道的幾個點JS面試
- instanceof和typeof的區別
- python的type和isinstance的區別Python
- 判斷一個類是否為另一個類的例項 instanceof關鍵字和isAssignableFrom方法的區別
- java中有哪幾種引用?它們的含義和區別是什麼Java
- 我們必須要了解的Java位運算(不僅限於Java)Java
- 成為Python大牛必須要掌握的高階語法——yieldPython
- 你必須搞清楚的String,StringBuilder,StringBufferUI
- 碼農與程式設計師的區別程式設計師
- 程式設計師到高階架構師,必須經歷的三個階段!程式設計師架構
- 如何使用CSS建立高階動畫,這個函式必須掌握CSS動畫函式
- python學習之isinstance與type的區別Python
- CISC和RISC是什麼?它們的特點和區別?
- Java Annotation 必須掌握的特性Java
- 我們評測了5個主流跨端框架,這是它們的區別跨端框架
- python資料型別判斷type與isinstance的區別Python資料型別
- Web上的支援的圖片格式以及它們之間的區別Web
- 對程式、執行緒和協程的理解以及它們的區別執行緒
- 高階運營和普通運營的區別
- ?你必須知道的Java泛型Java泛型
- JAVA高階面試必過知識點彙總Java面試
- volatile關鍵字解析~高階java必問Java
- 優秀程式設計師與普通碼農的區別程式設計師
- 高階Java工程師必備 ----- 深入分析 Java IO (三)Java工程師
- 程式設計師必須搞清的概念equals和=和hashcode的區別程式設計師
- redis必殺高階:安全Redis
- 囚徒困境下的996碼農們996
- Java 進階必備:HashMap 原始碼分析JavaHashMap原始碼
- python和C語言哪個難?它們的區別是什麼?PythonC語言
- java高階Java