Java中的instanceof症結字在Android中的用法實例詳解。本站提示廣大學習愛好者:(Java中的instanceof症結字在Android中的用法實例詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是Java中的instanceof症結字在Android中的用法實例詳解正文
鄙人面引見Android中若何應用instanceof症結字開辟更便利時,先來復習一下java中instanceof的概念。
instanceof年夜部門的概念是如許界說的:instanceof是Java的一個二元操作符,和==,>,<是統一類器械。因為它是由字母構成的,所以也是Java的保存症結字。它的感化是測試它右邊的對象能否是它左邊的類的實例,前往boolean類型的數據。舉個栗子:
String s = "I AM an Object!"; boolean isObject = s instanceof Object;
我們聲清楚明了一個String對象援用,指向一個String對象,然後用instancof來測試它所指向的對象能否是Object類的一個實例,明顯,這是真的,所以前往true,也就是isObject的值為True。
instanceof有一些用途。好比我們寫了一個處置賬單的體系,個中有如許三個類:
public class Bill {//省略細節} public class PhoneBill extends Bill {//省略細節} public class GasBill extends Bill {//省略細節}
在處置法式裡有一個辦法,接收一個Bill類型的對象,盤算金額。假定兩種賬單盤算辦法分歧,而傳入的Bill對象能夠是兩種中的任何一種,所以要用instanceof來斷定:
public double calculate(Bill bill) { if (bill instanceof PhoneBill) { //盤算德律風賬單 } if (bill instanceof GasBill) { //盤算燃氣賬單 } ... }
如許便可以用一個辦法處置兩種子類。
但是,這類做法平日被以為是沒有好好應用面向對象中的多態性。其實下面的功效請求用辦法重載完整可以完成,這是面向對象釀成應有的做法,防止回到構造化編程形式。只需供給兩個名字和前往值都雷同,接收參數類型分歧的辦法便可以了:
public double calculate(PhoneBill bill) { //盤算德律風賬單 } public double calculate(GasBill bill) { //盤算燃氣賬單 }
所以,應用instanceof在絕年夜多半情形下其實不是推舉的做法,應該好好應用多態。
以上是我抄的,認為寫的還不錯,簡介清楚明了,就拿過去援用一下。可以看出 instanceof症結是就是用來斷定右邊的對象能否是左邊類的實例,假如是,就可以處置下一步的邏輯。
在Android中,instanceof症結字經常使用來用在Fragment中挪用Activity辦法。好比說,你須要在Fragment中挪用以後Activity中的某個辦法,有的人說,那我直接從新寫一個不就是麼?那如果有特別的辦法,fragment不支撐呢?這時候候就用到了instanceof,舉個栗子:
if( getActivity() instanceof IndexActivity) ((IndexActivity) getActivity()).showccaidan();
下面兩行代碼中可以看出,假如以後這個Fragment 是IndexActivity的碎片時,那末久挪用activity中的辦法,挪用之前必需強轉一下以後Activity。
其實不只Fragment中可以或許用到instanceof症結字,自界說的Adapter中也是可以用到的:
if(context instanceof CommodityWarningActivity){ holder.entName_ll.setVisibility(View.VISIBLE); holder.entName.setText(list.get(arg0).getStrCorporationName()); }else{ holder.entName_ll.setVisibility(View.GONE); }
context這個做android都應當曉得,context從字面意思是高低文,或許叫做場景,也就是用戶與操作體系操作的一個進程。(不是特麼懂得context可以先去看看材料)。所以說假如有context處所須要的話都可使用instanceof症結字。
以上所述是小編給年夜家引見的Java中的instanceof症結字在Android中的用法實例詳解,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!