使用接口列表读取并保存Object列表

时间:2017-03-31 06:09:23

标签: java android interface

  

我见过某人的代码,无法理解它是如何工作的。

由于代码保存了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;

3 个答案:

答案 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)

当您将类的对象强制转换为该类实现的接口时,您只能访问该接口所实现的方法。