我有以下Api回复
{
"page": 1,
"per_page": 3,
"total": 12,
"total_pages": 4,
"data": [
{
"id": 1,
"first_name": "George",
"last_name": "Bluth",
"avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/calebogden/128.jpg"
},
{
"id": 2,
"first_name": "Janet",
"last_name": "Weaver",
"avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/josephstein/128.jpg"
},
{
"id": 3,
"first_name": "Emma",
"last_name": "Wong",
"avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/olegpogodaev/128.jpg"
}
]
}
我在大多数apis中都有以下反应
{
"page": 1,
"per_page": 3,
"total": 12,
"total_pages": 4,
现在我已经关注
了public class ApiBasePojo {
@SerializedName("page")
@Expose
private Integer page;
@SerializedName("per_page")
@Expose
private Integer perPage;
@SerializedName("total")
@Expose
private Integer total;
@SerializedName("total_pages")
@Expose
private Integer totalPages;
@SerializedName("data")
@Expose
private List<UserPojo> userDetail = null;
public Integer getPage() {
return page;
}
public void setPage(Integer page) {
this.page = page;
}
public Integer getPerPage() {
return perPage;
}
public void setPerPage(Integer perPage) {
this.perPage = perPage;
}
public Integer getTotal() {
return total;
}
public void setTotal(Integer total) {
this.total = total;
}
public Integer getTotalPages() {
return totalPages;
}
public void setTotalPages(Integer totalPages) {
this.totalPages = totalPages;
}
public List<UserPojo> getData() {
return userDetail;
}
public void setData(List<UserPojo> userDetail) {
this.userDetail = userDetail;
}
}
我担心的是每个pojo我必须重复页面,perpage,total,total_pages所以我正在寻找常见的pojo,我可以在任何需要的地方使用它。 我试过延伸,但不可能。 任何人都可以帮助我。谢谢。
Updated
假设我在base中添加常见内容并在userPojo中扩展它我无法在改造中设置值,因为List是集合 按照我的意思,我可以做这件事
public class MyBase {
@SerializedName("page")
@Expose
private Integer page;
@SerializedName("per_page")
@Expose
private Integer perPage;
@SerializedName("total")
@Expose
private Integer total;
@SerializedName("total_pages")
@Expose
private Integer totalPages;
}
**UserPojo**
public class UserPojo {
@SerializedName("id")
@Expose
private Integer id;
@SerializedName("first_name")
@Expose
private String firstName;
@SerializedName("last_name")
@Expose
private String lastName;
@SerializedName("avatar")
@Expose
private String avatar;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
}
MyNewClass
public class MyNewClass extends MyBase{
@SerializedName("data")
@Expose
private List<UserPojo> userDetail = null;
}
所以现在我可以在我的改造中使用MyNewClass但是每次我需要一个这样的新类
答案 0 :(得分:1)
通过将继承放在基类或接口中,您是否无法使用继承?大多数系统应该能够处理它。
我可能也会指出一些事情:(tl; dr)
有两个术语我觉得很困惑... Pojo是一个普通的旧Java对象,它没有任何限制,它不需要实现任何接口或任何要遵循的模式。通常这些都是你的注释。这些可能(并且应该绝对)包含业务逻辑。
Bean是不同的,bean的每个字段都有一个setter和一个getter,没有业务方法。
我提到差异,因为在这种情况下它真的很重要:
如果您拥有一组具有良好OO结构的业务类(避免使用setter,限制getter,封装等)并简单地注释成员以便与JSON数据一起使用,那么已经避免了您所讨论的问题(您的类会从公共基类继承,对吗?)
使用setter和getter创建bean框架然后继承仍然可以工作,但是你还需要一组并行的类来保存bean的业务逻辑,这很好我想但是那时候我就是这样。不确定以这种方式保持豆类干燥有多大好处,如果你正在经历所有这些努力,可能希望它们只是清楚地反映你的数据。