- 泛型可以解决数据类型的安全问题,它的主要原理是:在类声明的时候通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。就像下面这个类:
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的实体类,这极大地减少了冗余的代码: