真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何在AndroidStudio中自定義Debug變量視圖

如何在Android Studio中自定義Debug變量視圖?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

我們擁有10年網(wǎng)頁(yè)設(shè)計(jì)和網(wǎng)站建設(shè)經(jīng)驗(yàn),從網(wǎng)站策劃到網(wǎng)站制作,我們的網(wǎng)頁(yè)設(shè)計(jì)師為您提供的解決方案。為企業(yè)提供成都網(wǎng)站制作、做網(wǎng)站、微信開(kāi)發(fā)、小程序制作、手機(jī)網(wǎng)站制作設(shè)計(jì)H5頁(yè)面制作、等業(yè)務(wù)。無(wú)論您有什么樣的網(wǎng)站設(shè)計(jì)或者設(shè)計(jì)方案要求,我們都將富于創(chuàng)造性的提供專業(yè)設(shè)計(jì)服務(wù)并滿足您的需求。

我們?cè)贒ebug查看變量時(shí)通常會(huì)遇到這種情況

如何在Android Studio中自定義Debug變量視圖

此時(shí)我想查看 Goods 對(duì)象里面的具體屬性值,需要點(diǎn)擊左邊的展開(kāi)按鈕才能查看里面具體的屬性值,不能直接進(jìn)行查看。更糟糕的是當(dāng) Goods 對(duì)象在 List 容器中時(shí),我們?nèi)绻肟焖俨檎业疆?dāng)前 List 里元素的某一項(xiàng)(或幾項(xiàng))屬性時(shí),就會(huì)出現(xiàn)在下面的情況,我們只能逐一元素進(jìn)行展開(kāi)操作才能查看到元素對(duì)應(yīng)的信息。

如何在Android Studio中自定義Debug變量視圖

重寫toString及其局限性

上述問(wèn)題的一般解決方式是重寫該類的 toString 方法,然后重新運(yùn)行Porject,再次Debug時(shí)便可以看到變量的視圖會(huì)自動(dòng)變?yōu)?toString 方法的返回值,如下

如何在Android Studio中自定義Debug變量視圖

這樣便能無(wú)需展開(kāi)直接顯示 Goods 類的成員變量了,但該方式有幾個(gè)缺點(diǎn)

  • 添加 GoodstoString 方法之后需要重新運(yùn)行

  • 如果 Goods 是被依賴的 jar 這種已經(jīng)被編譯的只讀類,則無(wú)法更改

  • 對(duì)于 Goods 中包含大量屬性(比如20+個(gè))的情況下,無(wú)法全部顯示完,所以就無(wú)法根據(jù)自己的需求決定查看具體哪些屬性值 自定義變量視圖

IDE提供給我們一種自定義變量視圖的方式,專門用來(lái)解決上面的問(wèn)題并彌補(bǔ)了 toString 方法的不足。這里會(huì)有個(gè) 變量解析器 的概念,它用來(lái)控制當(dāng)前變量的顯示值(即debug時(shí)顯示在該變量后面的內(nèi)容,下稱”變量視圖”)。

首先Debug狀態(tài)下右擊變量,選擇 Customize Data Views 項(xiàng)

如何在Android Studio中自定義Debug變量視圖

接下來(lái)在 Customize Data Views 彈窗的Tab中選擇 Java Type Renderers 項(xiàng),如下

如何在Android Studio中自定義Debug變量視圖

點(diǎn)擊 + 來(lái)添加一個(gè)自定義的 變量解析器

如何在Android Studio中自定義Debug變量視圖

自定義一個(gè) 變量解析器 ,主要需要添加的是名稱、解析類型和解析方式三部分。

名稱:該解析器的標(biāo)識(shí)名稱

解析類型:表示當(dāng)前的解析器只對(duì)哪種類型的類進(jìn)行解析

解析方式:此處是核心部分,可以寫一個(gè)Java表達(dá)式,也可以寫一段代碼,這里的返回值就是該變量視圖

我們可以在IDE中添加多個(gè) 變量解析器 ,通過(guò)控制它的開(kāi)啟、禁用、順序、適用類等來(lái)控制當(dāng)前變量的顯示情況,下面進(jìn)行一次完整的操作流程演示

如何在Android Studio中自定義Debug變量視圖 

通過(guò)自定義 變量解析器 的好處是不需要重新運(yùn)行整個(gè)Project;而且還可以在Debug期間動(dòng)態(tài)切換變量視圖,比如

  • 查看 name 屬性時(shí): "name: " + getName()

  • 查看 type 屬性時(shí): "type: " + getType()

  • 查看 title 屬性時(shí): "title: " + getTitle()

  • ……

再進(jìn)一步抽象

看了官網(wǎng)的自定義Debug變量視圖這部分介紹后,感覺(jué)著實(shí)對(duì)于Debug很實(shí)用,通過(guò)自實(shí)現(xiàn)的方式使得開(kāi)發(fā)者能夠動(dòng)態(tài)化控制變量視圖。

自定義 變量解析器 的方式已經(jīng)能夠解決開(kāi)篇提到的問(wèn)題,但我更希望能通過(guò)它來(lái)找到控制變量視圖的通法,即寫一個(gè)通用的 變量解析器 而不是每debug一種類型的變量就單獨(dú)添加一個(gè)解析器。接下來(lái)要做的事情很清楚了,就是添加一個(gè)能夠?qū)?duì)象實(shí)例序列化成字符串的方法即可。最先想到的是通過(guò)Json進(jìn)行轉(zhuǎn)化,但Json一般依賴三方包,而我們想讓Debug功能能夠跟IDE是統(tǒng)一基準(zhǔn)線的,所以盡可能選擇使用Jdk自帶的api。

于是考慮到了反射,對(duì)于一般通用的變量視圖,我們可以直接通過(guò)反射取到每個(gè)屬性名,然后結(jié)合當(dāng)前實(shí)例來(lái)獲取屬性值,直接在上面的 解析類型 中指定為 java.lang.Object 以支持所有類型變量的解析, 解析方式 中添加下面的代碼

if (((Object) this) instanceof String
    || ((Object) this) instanceof Number
    || ((Object) this) instanceof Class) {
  return ((Object) this);
}
StringBuilder sb = new StringBuilder("{");
Class cls = ((Object) this).getClass();
java.lang.reflect.Field[] fields = cls.getDeclaredFields();
if (fields != null) {
  int size = fields.length;
  for (java.lang.reflect.Field field : fields) {
    field.setAccessible(true);
    Object value = field.get((Object) this);
    sb.append(field.getName())
        .append("=")
        .append(String.valueOf(value));
    if (--size > 0) {
      sb.append(", ");
    }
  }
}
return sb.append("}").toString();

添加完畢之后,會(huì)發(fā)現(xiàn)此時(shí)我們的IDE在Debug時(shí)異常強(qiáng)大,所有類型的變量視圖均自動(dòng)轉(zhuǎn)化成 key-value 形式的字符串,再也不用為了Debug變量而重寫 toString 方法??聪翫ebug的效果

如何在Android Studio中自定義Debug變量視圖

這里的 UserGoods 類均沒(méi)有重寫 toString 方法,但都能通過(guò)上面添加的通用解析器來(lái)進(jìn)行變量視圖解析。

Android是什么

Android是一種基于Linux內(nèi)核的自由及開(kāi)放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由美國(guó)Google公司和開(kāi)放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開(kāi)發(fā)。

看完上述內(nèi)容,你們掌握如何在Android Studio中自定義Debug變量視圖的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


網(wǎng)頁(yè)名稱:如何在AndroidStudio中自定義Debug變量視圖
網(wǎng)頁(yè)URL:http://weahome.cn/article/jghgcs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部