自定義模版,避免出現Null pointer exception,讓你的get和set方法更完美
在開發時,我們都習慣用gsonformat自動生成javaBean來接收後臺返回的資料,然而,很多時候,後臺並未返回欄位或者該欄位為空,我們在呼叫時就會出現各種Null pointer exception,為了避免這個錯誤,其實生成get和set方法時,可以自定義模板如下:
本來的模板為:IntelliJ Default
#if($field.modifierStatic) static ## #end $field.type ## #set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project)))) #if ($field.boolean && $field.primitive) is## #else get## #end ${name}() { return $field.name; }
研究發現,set和get方法可以根據&name和field.name來進性判斷,於是嘗試修改如下:
get方法:
#if($field.modifierStatic) static ## #end $field.type ## #set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project)))) #if ($field.boolean && $field.primitive) #if ($StringUtil.startsWithIgnoreCase($name, 'is')) #set($name = $StringUtil.decapitalize($name)) #else is## #end #else get## #end ${name}() { #if ($field.string) return $field.name == null ? "" : $field.name; #else #if ($field.list) if ($field.name == null) { return new ArrayList<>(); } return $field.name; #else return $field.name; #end #end }
set方法如下:
#set($paramName = $helper.getParamName($field, $project)) public ## #if($field.modifierStatic) static ## #end void set$StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project)))($field.type $paramName) { #if ($field.name == $paramName) #if (!$field.modifierStatic) this.## #else $classname.## #end #end #if($field.string) $field.name = $paramName == null ? "" : $paramName; #else $field.name = $paramName; #end }
如此便可生成如下程式碼:
public class ClassifyBean {
private String msg;
private int code;
private boolean success;
private List<DataBean> data;
public String getMsg() {
return msg == null ? "" : msg;
}
public void setMsg(String msg) {
this.msg = msg == null ? "" : msg;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public List<DataBean> getData() {
if (data == null) {
return new ArrayList<>();
}
return data;
}
public void setData(List<DataBean> data) {
this.data = data;
}
public static class DataBean {
private String id;
private String name;
private String parentId;
private int flag;
private String thumbnail;
private int isDelete;
private int priority;
private List<ChildrenBeanX> children;
public String getId() {
return id == null ? "" : id;
}
public void setId(String id) {
this.id = id == null ? "" : id;
}
public String getName() {
return name == null ? "" : name;
}
public void setName(String name) {
this.name = name == null ? "" : name;
}
public String getParentId() {
return parentId == null ? "" : parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId == null ? "" : parentId;
}
public int getFlag() {
return flag;
}
public void setFlag(int flag) {
this.flag = flag;
}
public String getThumbnail() {
return thumbnail == null ? "" : thumbnail;
}
public void setThumbnail(String thumbnail) {
this.thumbnail = thumbnail == null ? "" : thumbnail;
}
public int getIsDelete() {
return isDelete;
}
public void setIsDelete(int isDelete) {
this.isDelete = isDelete;
}
public int getPriority() {
return priority;
}
public void setPriority(int priority) {
this.priority = priority;
}
public List<ChildrenBeanX> getChildren() {
if (children == null) {
return new ArrayList<>();
}
return children;
}
public void setChildren(List<ChildrenBeanX> children) {
this.children = children;
}
public static class ChildrenBeanX {
private String id;
private String name;
private String parentId;
private int flag;
private int isDelete;
private int priority;
private String thumbnail;
private List<ChildrenBean> children;
public String getId() {
return id == null ? "" : id;
}
public void setId(String id) {
this.id = id == null ? "" : id;
}
public String getName() {
return name == null ? "" : name;
}
public void setName(String name) {
this.name = name == null ? "" : name;
}
public String getParentId() {
return parentId == null ? "" : parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId == null ? "" : parentId;
}
public int getFlag() {
return flag;
}
public void setFlag(int flag) {
this.flag = flag;
}
public int getIsDelete() {
return isDelete;
}
public void setIsDelete(int isDelete) {
this.isDelete = isDelete;
}
public int getPriority() {
return priority;
}
public void setPriority(int priority) {
this.priority = priority;
}
public String getThumbnail() {
return thumbnail == null ? "" : thumbnail;
}
public void setThumbnail(String thumbnail) {
this.thumbnail = thumbnail == null ? "" : thumbnail;
}
public List<ChildrenBean> getChildren() {
if (children == null) {
return new ArrayList<>();
}
return children;
}
public void setChildren(List<ChildrenBean> children) {
this.children = children;
}
public static class ChildrenBean {
private String id;
private String name;
private String parentId;
private int flag;
private int isDelete;
private int priority;
private String thumbnail;
private List<?> children;
public String getId() {
return id == null ? "" : id;
}
public void setId(String id) {
this.id = id == null ? "" : id;
}
public String getName() {
return name == null ? "" : name;
}
public void setName(String name) {
this.name = name == null ? "" : name;
}
public String getParentId() {
return parentId == null ? "" : parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId == null ? "" : parentId;
}
public int getFlag() {
return flag;
}
public void setFlag(int flag) {
this.flag = flag;
}
public int getIsDelete() {
return isDelete;
}
public void setIsDelete(int isDelete) {
this.isDelete = isDelete;
}
public int getPriority() {
return priority;
}
public void setPriority(int priority) {
this.priority = priority;
}
public String getThumbnail() {
return thumbnail == null ? "" : thumbnail;
}
public void setThumbnail(String thumbnail) {
this.thumbnail = thumbnail == null ? "" : thumbnail;
}
public List<?> getChildren() {
if (children == null) {
return new ArrayList<>();
}
return children;
}
public void setChildren(List<?> children) {
this.children = children;
}
}
}
}
僅供參考,如有疑問可聯絡[email protected],歡迎指正!
相關推薦
自定義模版,避免出現Null pointer exception,讓你的get和set方法更完美
在開發時,我們都習慣用gsonformat自動生成javaBean來接收後臺返回的資料,然而,很多時候,後臺並未返回欄位或者該欄位為空,我們在呼叫時就會出現各種Null pointer exception,為了避免這個錯誤,其實生成get和set方法時,可以自定義模板如下:
【Android】自定義錄音、播放動畫View,讓你的錄音浪起來
前言 先看效果圖 嗯,然後大致就是這樣,按住錄音,然後有一個倒計時,最外層一個進度條,還有一個類似模擬聲波的動畫效果(其實中間的波浪會根據聲音的大小浪起來的~) 實現思路 然後,我們適當的來分析一下這個錄音動畫的實現方式。這個肯定是通過自定義控制元件
HashMap中使用自定義類作為Key時,為何要重寫HashCode和Equals方法
ide string https object 避免 equals方法 args sys 添加 之前一直不是很理解為什麽要重寫HashCode和Equals方法,才只能作為鍵值存儲在HashMap中。通過下文,可以一探究竟。 首先,如果我們直接用以下的Person類
剛開始使用mevan出現的Null Pointer Exception問題
這個是測試時候,這個部分報錯的情況,然後對照著上面指示的位置一個個檢查也沒有發現到底哪裡錯了。 public class EMSUtils { private static BasicDataSource ds; static { try{
debug---null Pointer Exception--一步步查找(2)
image party 添加 -- 空指針異常 pointer entity oca except 添加PartyLocationRepository後,再次在Ubuntu中編譯項目,再次報空指針異常。 直接在createDto處打斷點,然後debug每個表達式的值,找出
為Html.EditorForModel自定義模版
cte cfg 下拉列表框 ref tle lis date mode 自定義模版 對於MVC視圖渲染來說,大家應該不會陌生,但對於模型的渲染,不知道是否聽說過,主要是說Model通過它屬性的相關特性(DataType,UIHint)來將它們自動渲染到View上,這是一個比
自定義Toast的出現樣式
-m rom 參數 展示 text set 位置 from 方法 使用下面的方法來獲取一個Toast對象: private Toast showShortToast() { if (toast == null) { toast = new Toast(this); //傳
PyCharm 自定義模版
PyCharm 自定義模板 建立一個新的模板: 點選 Preferences... 選項或者按下快捷鍵 Command(⌘) + , 開啟設定對話方塊。 找到 在 Editor 下的 File and Code Templates 設定頁面。 按下 + ,在 Name: 中
Oracle建立自定義函式時出現錯誤:PLS-00103及PLS-00382
(作者:陳玓玏) 一、PLS-00103 一般出現這個錯誤,基本上可以確定是你的語法錯誤,或者是有中文的輸入。 比如說: 1、Oracle用elsif而你用的是else if; 2、直接從網頁中把程式碼貼上過來結果程式碼中有中文空格。 這種情況下,解決問題的方法
VS2010自定義模版全過程
VS2010已經成為.NET開發人員的必備工具,相比經典版VS2005,到過渡版VS2008,2010在效能穩定性和易用性上都得到很大的提高。 結合VS工具,其下的外掛也層出不窮。今天重點給大家介紹如何使用VS2010VS2010自定義新建檔案模版,新建檔案時,添加個人資訊,如:建立者,建立
雲展網教程 | 如何儲存和應用自定義模版主題【付費使用者功能】
付費使用者可以自定義模板內容,比如工具欄按鈕,工具欄色彩、背景圖片、背景音樂等。對於自定義的模板可以作為主題儲存下來,應用到另一本雜誌上哦。 個人專業版可以儲存1個主題,企業黃金版可以儲存3個,企業白金版儲存5個主題 儲存主題: 選擇基本的模板。如:經典演繹、精簡主義等模板
自定義控制元件裡面使用自定義屬性,出現錯誤Can't convert value at index 0 to color: type=0x5
首先背景是eclipse的專案轉到Androidstudio上來,as的版本是3.0以上的,然後新建專案,複製貼上xxx的,首先出了個問題,佈局檔案說有錯,需要正確build才行,有毒,坑的很,重啟as才搞定。(對了,因為新版的as新建佈局,都是用的constrantlayo
Eclipse中自定義類似“syo”出現“System.out.println();”程式碼塊縮寫自動補全
在eclipse中,當你輸入“syo”然後點選自動補全快捷鍵(我設定的是“Alt+/”),eclipse就會自動補全成碼“System.out.println();”。 注:因為不知道這個功能的真名叫什麼所以在本部落格中先暫時稱之為“程式碼塊自動補全”。以上面為例,其中“syo”暫稱為縮寫
Eclipse常用技巧總結:熱鍵,自定義模版及其他
http://developer.51cto.com/art/200906/129804.htm 關於eclipse的使用方面,其實有些東西都是小技巧的東西。知道了這些Eclipse常用技巧後,對程式設計會帶來很大的方便。 一.老是使用滑鼠操作,有的功能要點好多次滑鼠
微信小程式 —— 解決自定義彈窗出現後,蒙層下的頁面仍可以滾動的問題
在微信小程式開發中,會碰到自定義彈窗出現後,蒙層下面的頁面仍可以滾動的問題。 例如: 解決方法: 1. 先點擊出現蒙層時,頁面的最外層view:height:100vh (靈活設定,
ubuntu 下 wordpress 設定 Permalink 為 自定義結構後出現404頁面 nginx
1. 先開啟 nginx 配置檔案 default cd /etc/nginx/sites-available/ 2. 編輯 default 檔案 sudo vi default 3. serv
findViewById自定義控制時出現空指標異常
開發平臺 ADT 22 我在使用百度地圖介面的時候,用到MapView控制元件,然後在Activity中使用mMapView = (MapView)findViewById(R.id.bmapView),似乎沒什麼問題, 然後在這裡丟擲空指標異常,我首先想的就是難道這個
JAVAEE——struts2_04:自定義攔截器、struts2標簽、登陸功能和校驗登陸攔截器的實現
strac htm logs transacti 標識 area 返回 ftw jsp 一、自定義攔截器 1.架構 2.攔截器創建 //攔截器:第一種創建方式 //攔截器生命周期:隨項目的啟動而創建,隨項目關閉而銷毀 public class MyInt
Silverlight自定義資料繫結控制元件應該如何處理IEditableObject和IEditableCollectionView物件
原文: Silverlight自定義資料繫結控制元件應該如何處理IEditableObject和IEditableCollectionView物件 原創文章,如需轉載,請註明出處。 最近在一直研究Silverlight下的資料繫結控制元件,發現有這樣兩個介面IEditableObject
通過自定義屬性,排他的原理實現列表的表頭和對應內容的切換
要點: 1.自定義屬性,可以用來存放類似於這個案例中索引的不是自帶的屬效能滿足的,通過setAttribute("自定義屬性名",值)來自定義一個屬性,切記不可直接通過this.自定義屬性來設定值 同時,獲取和移除自定義屬性,分別是getAttribute()和re