- 泛型可以解決數據類型的安全問題,它的主要原理是:在類聲明的時候通過一個標識表示類中某個屬性的類型或者是某個方法的返回值及參數類型。就像下面這個類:
class Person<K,V>{
private K key ;
private V value ;
//省略set和get ...
};
好處是在聲明對象時,可以指定K和V的類型,表現得更為靈活:
Person<String,Integer> t = null ;
t = new Person<String,Integer>() ;
t.setKey("劉德華") ;
t.setValue(40) ;
如果在聲明類對象的時候,沒有指定類型,系統會會自動將類中的“T”都換成“Object”,編譯程序的時候會發出警告。
- 定義一個網絡返回基礎類BaseEntity,里面的data我們不知道會傳回來什么類型的數據,有可能只包含一個token,或是一個array,所以我們將其定義為T,讓使用它的人去定義data的類型,代碼如下:
/**
* 網絡返回基礎類
* @param <T>
*/
public class BaseEntity<T> {
private int errcode;
private String errmsg;
private T data;
//省略set和get ...
}
public class GoodsItem {
private String productName;
//省略set和get ...
有些數據是列表結構,因此我們還需要定義一個ListEntity:
/**
* 網絡返回列表基礎類
* @param <T>
*/
public class ListEntity<T> {
private String total;
private String hasnext;
private String count;
private String page;
private String totalPages;
private List<T> list;
//省略set和get ...
}
這樣,我們就把一些通用的Entity代碼集合了起來,后面要解析訂單列表、客戶列表,我們只需要定義一個OrderItem和CustomerItem的實體類,這極大地減少了冗余的代碼: