我见过某人的代码,无法理解它是如何工作的。
由于代码保存了Interfaces列表中的对象List,可以将其读回。
请解释它的工作原理。我们可以在接口中保存Object(Object实现它)。 AFAIK界面没有成员。如何保存和检索此代码请解释。
实施BusinessObject的ContactBO
public class ContactBO implements BusinessObject {
private String id, fullName, department, ;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getFullName() {
return fullName;
}
public void setFullName(String fullName) {
this.fullName = fullName;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
@Override
public boolean isSection() {
// TODO Auto-generated method stub
return false;
}
}
BussinessObject
public interface BusinessObject {
boolean isSection();
}
保存联系人代码列表
List<ContactBO> contactList = new Gson().fromJson(jsonArray.toString(),
new TypeToken<List<ContactBO>>() {}.getType());
List<BusinessObject> list = new ArrayList<BusinessObject>();
list.addAll(contactList);
使用接口列表
读取ContactBO列表List<ContactBO> contactListItems = (List<ContactBO>) (List<?>) result.list;//where list is public List<BusinessObject> list;
答案 0 :(得分:1)
以下是我从源头上可以理解的内容。
List<ContactBO> contactList = new Gson().fromJson(jsonArray.toString(),
new TypeToken<List<ContactBO>>() {}.getType());
这并不意味着
由于代码保存接口列表中的对象列表并且可以读取它 回
以上行将使用GSON的响应转换为类型 List
的{{1}}对象。
通过实现ContactBO
接口,BusinessObject
仍然是一个类,而不是一个接口。
现在是下一行
ContactBO
这会再次创建类型 List<BusinessObject> list = new ArrayList<BusinessObject>();
现在以下行。 BusinessObject
将类型为list.addAll(contactList);
的对象添加到类型为ContactList
的超级对象
答案 1 :(得分:0)
“多态性是一个对象采用多种形式的能力。当使用父类引用来引用子类对象时,OOP中最常见的多态性使用。”
List<BusinessObject> list = new ArrayList<BusinessObject>();
这一行基本上显示了Polymorphsim概念,Parent类引用可以保存Child类对象。
答案 2 :(得分:0)
当您将类的对象强制转换为该类实现的接口时,您只能访问该接口所实现的方法。