1. 程式人生 > >自定義模版,避免出現Null pointer exception,讓你的get和set方法更完美

自定義模版,避免出現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,getset方法完美

在開發時,我們都習慣用gsonformat自動生成javaBean來接收後臺返回的資料,然而,很多時候,後臺並未返回欄位或者該欄位為空,我們在呼叫時就會出現各種Null pointer exception,為了避免這個錯誤,其實生成get和set方法時,可以自定義模板如下:

【Android】定義錄音、播放動畫View,的錄音浪起來

前言 先看效果圖 嗯,然後大致就是這樣,按住錄音,然後有一個倒計時,最外層一個進度條,還有一個類似模擬聲波的動畫效果(其實中間的波浪會根據聲音的大小浪起來的~) 實現思路 然後,我們適當的來分析一下這個錄音動畫的實現方式。這個肯定是通過自定義控制元件

HashMap中使用定義類作為Key時,為何要重寫HashCodeEquals方法

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定義資料繫結控制元件應該如何處理IEditableObjectIEditableCollectionView物件

原文: Silverlight自定義資料繫結控制元件應該如何處理IEditableObject和IEditableCollectionView物件 原創文章,如需轉載,請註明出處。   最近在一直研究Silverlight下的資料繫結控制元件,發現有這樣兩個介面IEditableObject

通過定義屬性,排他的原理實現列表的表頭對應內容的切換

要點: 1.自定義屬性,可以用來存放類似於這個案例中索引的不是自帶的屬效能滿足的,通過setAttribute("自定義屬性名",值)來自定義一個屬性,切記不可直接通過this.自定義屬性來設定值    同時,獲取和移除自定義屬性,分別是getAttribute()和re