java - 关于获取和设置以及何时使用父类(super class)的问题

标签 java interface get set super

我有以下获取方法:

public List<PersonalMessage> getMessagesList() {
    List<PersonalMessage> newList = new ArrayList<PersonalMessage>();

    for(PersonalMessage pMessage : this.listMessages) {
        newList.add(pMessage.clone());
    }

    return newList;
}

而且你可以看到,如果我需要将实现从 ArrayList 更改为其他东西,我可以很容易地做到,我只需要更改 newList 的初始化以及所有其他依赖于 getMessageList() 返回内容的代码仍然有效。

然后我有这个设置方法:

public void setMessagesList(ArrayList<PersonalMessage> listMessages) {
    this.listMessages = listMessages;
}

我的问题是,我应该在方法签名中使用 List 而不是 `ArrayList 吗?

我决定使用 ArrayList,因为这样我可以强制实现我想要的,否则可能会到处都是不同类型的列表。

但我不确定这是不是要走的路...

最佳答案

setter 方法打破了底层表示的抽象。您的公共(public)界面真的需要它吗?

public void setMessagesList(Collection<PersonalMessage> messages) {
    this.listMessages = new ArrayList<PersonalMessage>(messages);
}

关于java - 关于获取和设置以及何时使用父类(super class)的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2890064/

相关文章:

java - 添加 protected 构造函数以允许子类提供不同的实现

与服务器交互的 Android 应用程序

swift - URLSession 不运行第二个 GET

delphi - 是否有像 TInterfacedObject 这样的非引用计数基类?

javascript - 使用 AJAX 或 iframe 将数据从一个网站插入另一个网站

php - $_GET 无法正常工作

java - 使窗口模糊和鼠标 Activity 的服务 session 无效

java - try catch 将名称拆分为第一个和最后一个的异常

java - 找到多个 BitSets java 的共同父级

java - 尝试为我的程序发出错误消息