老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

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

如何在Android Studio中自定義Debug變量視圖?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

我們擁有10年網頁設計和網站建設經驗,從網站策劃到網站制作,我們的網頁設計師為您提供的解決方案。為企業提供成都網站制作、做網站、微信開發、小程序制作手機網站制作設計H5頁面制作、等業務。無論您有什么樣的網站設計或者設計方案要求,我們都將富于創造性的提供專業設計服務并滿足您的需求。

我們在Debug查看變量時通常會遇到這種情況

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

此時我想查看 Goods 對象里面的具體屬性值,需要點擊左邊的展開按鈕才能查看里面具體的屬性值,不能直接進行查看。更糟糕的是當 Goods 對象在 List 容器中時,我們如果想快速查找到當前 List 里元素的某一項(或幾項)屬性時,就會出現在下面的情況,我們只能逐一元素進行展開操作才能查看到元素對應的信息。

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

重寫toString及其局限性

上述問題的一般解決方式是重寫該類的 toString 方法,然后重新運行Porject,再次Debug時便可以看到變量的視圖會自動變為 toString 方法的返回值,如下

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

這樣便能無需展開直接顯示 Goods 類的成員變量了,但該方式有幾個缺點

  • 添加 GoodstoString 方法之后需要重新運行

  • 如果 Goods 是被依賴的 jar 這種已經被編譯的只讀類,則無法更改

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

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

首先Debug狀態下右擊變量,選擇 Customize Data Views

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

接下來在 Customize Data Views 彈窗的Tab中選擇 Java Type Renderers 項,如下

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

點擊 + 來添加一個自定義的 變量解析器

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

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

名稱:該解析器的標識名稱

解析類型:表示當前的解析器只對哪種類型的類進行解析

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

我們可以在IDE中添加多個 變量解析器 ,通過控制它的開啟、禁用、順序、適用類等來控制當前變量的顯示情況,下面進行一次完整的操作流程演示

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

通過自定義 變量解析器 的好處是不需要重新運行整個Project;而且還可以在Debug期間動態切換變量視圖,比如

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

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

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

  • ……

再進一步抽象

看了官網的自定義Debug變量視圖這部分介紹后,感覺著實對于Debug很實用,通過自實現的方式使得開發者能夠動態化控制變量視圖。

自定義 變量解析器 的方式已經能夠解決開篇提到的問題,但我更希望能通過它來找到控制變量視圖的通法,即寫一個通用的 變量解析器 而不是每debug一種類型的變量就單獨添加一個解析器。接下來要做的事情很清楚了,就是添加一個能夠將對象實例序列化成字符串的方法即可。最先想到的是通過Json進行轉化,但Json一般依賴三方包,而我們想讓Debug功能能夠跟IDE是統一基準線的,所以盡可能選擇使用Jdk自帶的api。

于是考慮到了反射,對于一般通用的變量視圖,我們可以直接通過反射取到每個屬性名,然后結合當前實例來獲取屬性值,直接在上面的 解析類型 中指定為 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();

添加完畢之后,會發現此時我們的IDE在Debug時異常強大,所有類型的變量視圖均自動轉化成 key-value 形式的字符串,再也不用為了Debug變量而重寫 toString 方法。看下Debug的效果

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

這里的 UserGoods 類均沒有重寫 toString 方法,但都能通過上面添加的通用解析器來進行變量視圖解析。

Android是什么

Android是一種基于Linux內核的自由及開放源代碼的操作系統,主要使用于移動設備,如智能手機和平板電腦,由美國Google公司和開放手機聯盟領導及開發。

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


網頁標題:如何在AndroidStudio中自定義Debug變量視圖
文章分享:http://www.xueling.net.cn/article/jghgcs.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 国内自产拍自拍A免费毛片 国内精品999 | 成人性色生活片免费看爆迷你毛片 | 97精品人妻一区二区三区香蕉 | 午夜青青草 | 免费国产自线拍一欧美视频 | 久久久国产精品成人免费 | 久久九七 | 欧美精品一区二区三区久久久 | 伊人久久综合精品无码 | 成全视频在线观看大全腾讯地图 | 欧美成人精品A∨在线观看 啪啪av网站 | 成人久久18免费网站 | 国语少妇高潮对白在线 | 露脸国产精品自产拍在线观看 | 开心婷婷激激情av | 国产亚洲精品资源在线26U | 99青青| 在线播放日韩 | 亚洲午夜福利院在线观看 | 色婷婷av一区二区三区久久 | 国产免费一区二区三区最新6 | 亚洲美女三区 | 全国最大的成人网站 | 精品亚洲成人 | 四虎成人精品国产永久免费 | a级毛片免费全部播放无码 一区二区在线免费观看视频 | 色婷婷五月色综合AⅤ视频 午夜亚洲国产理论片 | 最新永久地址 | 老熟女五十路乱子交尾中出一区 | 久久亚洲色WWW成人图片 | 亚洲精品成人无码中文毛片不卡 | 亚洲中文字幕无线无码毛片 | 中文字幕另类日韩欧美亚洲嫩草 | 水蜜桃成视频人在线看 | 久久影视一区二区 | 亚洲中文久久精品无码浏不卡 | 日韩精品无码人成视频手机 | 国产乱淫a∨片免费观看 | 一级黄色美女片 | 国产亚洲精品自在久久 | 色综合色欲色综合色综合色乛 |