高级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、isAssignableFrom的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何定位你在宇宙的位置如何定位电脑位置
- 下一篇: 漫画:什么是人工智能