高级JAVA码农必须搞清楚它们的区别:instanceof、isInstance、isAssignableFrom
轉(zhuǎn)載自?高級(jí)JAVA碼農(nóng)必須搞清楚它們的區(qū)別:instanceof、isInstance、isAssignableFrom
instanceof、isInstance、isAssignableFrom這幾個(gè)有沒(méi)有接觸過(guò),或者接觸過(guò)部分?
定義
a instanceof B?
a是B的實(shí)例,B是類或者接口、父類或父接口,即B c = a成立。
B.class.isInstance(a)
這個(gè)叫動(dòng)態(tài)等價(jià),效果和上面等價(jià),一般用于檢查泛型,如jdk中CheckedMap里面用到這個(gè)檢查Map里面的key、value類型是否和約定的一樣。
A.class.isAssignableFrom(B)
兩個(gè)class的類型關(guān)系判斷,判斷B是不是A的子類或子接口
演示
先看看下面的例子就會(huì)明白它們各自的用途和含義。
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
總結(jié)
以上是生活随笔為你收集整理的高级JAVA码农必须搞清楚它们的区别:instanceof、isInstance、isAssignableFrom的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何定位你在宇宙的位置如何定位电脑位置
- 下一篇: 漫画:什么是人工智能