, "/>

一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - Java中的instanceof關(guān)鍵字在Android中的用法實(shí)例詳解

Java中的instanceof關(guān)鍵字在Android中的用法實(shí)例詳解

2020-05-27 11:25MrZhang_happy JAVA教程

instanceof是Java的一個(gè)二元操作符,和==,>,<是同一類東西。接下來通過本文給大家介紹Java中的instanceof關(guān)鍵字在Android中的用法,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧

在下面介紹Android中如何使用instanceof關(guān)鍵字開發(fā)更方便時(shí),先來溫習(xí)一下java中instanceof的概念。

instanceof大部分的概念是這樣定義的:instanceof是Java的一個(gè)二元操作符,和==,>,<是同一類東西。由于它是由字母組成的,所以也是Java的保留關(guān)鍵字。它的作用是測試它左邊的對象是否是它右邊的類的實(shí)例,返回boolean類型的數(shù)據(jù)。舉個(gè)栗子:

?
1
2
String s = "I AM an Object!";
 boolean isObject = s instanceof Object;

  我們聲明了一個(gè)String對象引用,指向一個(gè)String對象,然后用instancof來測試它所指向的對象是否是Object類的一個(gè)實(shí)例,顯然,這是真的,所以返回true,也就是isObject的值為True。

  instanceof有一些用處。比如我們寫了一個(gè)處理賬單的系統(tǒng),其中有這樣三個(gè)類:

?
1
2
3
public class Bill {//省略細(xì)節(jié)}
  public class PhoneBill extends Bill {//省略細(xì)節(jié)}
  public class GasBill extends Bill {//省略細(xì)節(jié)}

  在處理程序里有一個(gè)方法,接受一個(gè)Bill類型的對象,計(jì)算金額。假設(shè)兩種賬單計(jì)算方法不同,而傳入的Bill對象可能是兩種中的任何一種,所以要用instanceof來判斷:

?
1
2
3
4
5
6
7
8
9
public double calculate(Bill bill) {
 if (bill instanceof PhoneBill) {
 //計(jì)算電話賬單
 }
 if (bill instanceof GasBill) {
 //計(jì)算燃?xì)赓~單
 }
 ...
 }

  這樣就可以用一個(gè)方法處理兩種子類。

  然而,這種做法通常被認(rèn)為是沒有好好利用面向?qū)ο笾械亩鄳B(tài)性。其實(shí)上面的功能要求用方法重載完全可以實(shí)現(xiàn),這是面向?qū)ο笞兂蓱?yīng)有的做法,避免回到結(jié)構(gòu)化編程模式。只要提供兩個(gè)名字和返回值都相同,接受參數(shù)類型不同的方法就可以了:

?
1
2
3
4
5
6
public double calculate(PhoneBill bill) {
  //計(jì)算電話賬單
  }
  public double calculate(GasBill bill) {
  //計(jì)算燃?xì)赓~單
  }

  所以,使用instanceof在絕大多數(shù)情況下并不是推薦的做法,應(yīng)當(dāng)好好利用多態(tài)。

以上是我抄的,覺得寫的還不錯(cuò),簡介明了,就拿過來引用一下。可以看出 instanceof關(guān)鍵是就是用來判斷左邊的對象是否是右邊類的實(shí)例,如果是,就能處理下一步的邏輯。

在Android中,instanceof關(guān)鍵字常用來用在Fragment中調(diào)用Activity方法。比如說,你需要在Fragment中調(diào)用當(dāng)前Activity中的某個(gè)方法,有的人說,那我直接重新寫一個(gè)不就是么?那要是有特殊的方法,fragment不支持呢?這時(shí)候就用到了instanceof,舉個(gè)栗子:

?
1
2
if( getActivity() instanceof IndexActivity)
((IndexActivity) getActivity()).showccaidan();

上面兩行代碼中可以看出,如果當(dāng)前這個(gè)Fragment 是IndexActivity的碎片時(shí),那么久調(diào)用activity中的方法,調(diào)用之前必須強(qiáng)轉(zhuǎn)一下當(dāng)前Activity。

其實(shí)不僅Fragment中能夠用到instanceof關(guān)鍵字,自定義的Adapter中也是可以用到的:

?
1
2
3
4
5
6
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這個(gè)做android都應(yīng)該知道,context從字面意思是上下文,或者叫做場景,也就是用戶與操作系統(tǒng)操作的一個(gè)過程。(不是特么了解context可以先去看看資料)。所以說如果有context地方需要的話都可以使用instanceof關(guān)鍵字。

以上所述是小編給大家介紹的Java中的instanceof關(guān)鍵字在Android中的用法實(shí)例詳解,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對服務(wù)器之家網(wǎng)站的支持!

原文鏈接:http://blog.csdn.net/mrzhang_happy/article/details/50462868

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产午夜亚洲精品 | 色婷婷久久综合中文久久一本` | 成人久久久 | 国产精品国产色综合色 | 俄罗斯年轻男同gay69 | 爱情岛论坛亚洲品质自拍视频 | 欧美成人aaaa免费高清 | 欧洲vodafonewi精品 | 精品久久免费观看 | a级免费在线观看 | 60老妇性xxxxhd| 国产思妍小仙女一二区 | 欧美另类videos另类粗暴 | 91香蕉嫩草| 亚洲欧洲日产v特级毛片 | 久久久无码精品亚洲A片猫咪 | 欧美日韩人成在线观看 | www亚洲视频 | 美女被视频网站 | 天美传媒影视在线免费观看 | 免费一级欧美片在线观看 | 被老外操 | 久久成人国产精品一区二区 | 粉嫩高中生第一次不戴套 | 日本大尺度激情做爰叫床 | 色婷婷婷丁香亚洲综合不卡 | 色愉拍亚洲偷自拍 | 天若有情1992国语版完整版 | 久久精品热在线观看85 | 4虎影视国产在线观看精品 4s4s4s4s色大众影视 | 扒开双腿疯狂进出爽爽动态图 | 国内精品福利丝袜视频_速 国内精品91久久久久 | 免费黄色网站视频 | 亚洲精品αv一区二区三区 亚洲精品91大神在线观看 | h网站国产| 欧美性色黄大片四虎影视 | 视频二区 素人 欧美 日韩 | 日本大片免a费观看在线 | 小黄鸭YELLOWDUCK7596| 久草青青在线 | 日本动漫打扑克动画片樱花动漫 |