使用Java中的getter方法将元素添加到List是一种不好的做法吗?

米拉德·R

假设我在一个类中有一个private ArrayList或一个LinkedList内部,我将永远不会为其分配新的引用,换句话说,这将永远不会发生:

myLinkedList = anotherLinkedList;

这样我就不需要使用setMyLinkedList(anotherLinkedList)

但!我需要向其中添加元素,或从中删除元素。

  • 我应该写一种新的setter只,做的任务adding,而不是settingmyLinkedList.add(someElement)

  • 还是可以通过使用来做到这一点getter,而不违反Encapsulation主体?

    getMyLinkedList().add(someElement)

(+假设如果我不遵守封装规范,那么我将失去商标:-“)

尼克·德法齐奥

我认为做这样的事情不是一个特别好的做法:

myObj.getMyList().add(x);

因为您是以非只读方式公开私有类变量的,所以我确实经常看到它(我正在看着您,自动生成的类)。我会争辩说,不是那样做,而是返回一个不可修改的列表,并允许该类的用户通过显式方法添加到列表中:

public class MyClass{
    private final List<String> myList = new ArrayList<String>();

    public List<String> getList(){
        return Collections.unmodifiableList(this.myList);
    }

    public void addToList(final String s){
        this.myList.add(s);
    }
}

编辑在审查您的评论后,我想补充一点关于您的传球手的想法:

我的意思是在类本身内部的一种新型setter中使用该行代码,例如public void setter(someElement){this.myLinkedList.add(someElement);}

如果我正确理解您的意思,那是说您要公开仅添加到列表中的方法。总体而言,这是我认为您应该为之奋斗的目标,而且很多人都在回答中概述了这些内容,但是,将其标记为二传手会产生误导,因为您不会重新分配(设置)任何东西。那,我强烈建议您尽可能从getter方法返回一个只读列表。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将事件的逻辑以一种单独的方法添加到触发该事件的方法中,这是一种很好的做法吗?

来自分类Dev

扩展骨干集合以使用自定义方法添加逻辑是一种不好的做法吗?

来自分类Dev

这在 PHP 中是一种不好的做法吗?

来自分类Dev

使用通用的FindViewById是一种不好的做法吗?

来自分类Dev

使用通用的FindViewById是一种不好的做法吗?

来自分类Dev

PHPUnit:在一个测试中对模拟方法使用多个断言是一种不好的做法吗?

来自分类Dev

PHPUnit:在一个测试中对模拟方法使用多个断言是一种不好的做法吗?

来自分类Dev

将函数名称存储在变量中并使用变量调用函数是一种不好的做法吗?

来自分类Dev

在C ++中,将参数包用作初始化列表是一种不好的做法吗?

来自分类Dev

将线程局部值保存在静态final字段中是一种不好的做法吗?

来自分类Dev

在Java中,使用nextLine()重新分配给相同的字符串变量是一种不好的做法吗?

来自分类Dev

在Java游戏循环中使用“ SwingUtilities.invokeLater()”是一种不好的做法吗?

来自分类Dev

在Java游戏循环中使用“ SwingUtilities.invokeLater()”是一种不好的做法吗?

来自分类Dev

如何使用一种方法检查要添加到数组中的新元素是否尚未添加?

来自分类Dev

在SQLalchemy中混合使用ORM和显式SQL是一种不好的做法吗?

来自分类Dev

有没有一种方法可以将空元素添加到Javascript数组中?

来自分类Dev

有多少种方法可以将元素添加到列表中,哪一种是最快的?

来自分类Dev

将虚拟方法添加到超类中以便子类可以覆盖它是一种好习惯吗?

来自分类Dev

在PHP中以一种语法将多组命名元素添加到数组

来自分类Dev

在一个元素中使用多个供应商标签是一种不好的做法吗?

来自分类Dev

在一个元素中使用多个供应商标签是一种不好的做法吗?

来自分类Dev

寻找一种将JavaScript文件添加到页面中的方法

来自分类Dev

将静态属性包含在存储库中可以吗,或者这是一种不好的做法?

来自分类Dev

lua:声明表“托管”所有图形元素是一种不好的做法吗?

来自分类Dev

JavaScript类,添加这样的事件侦听器是一种不好的做法吗?

来自分类Dev

有没有一种方法可以将一行中的多个元素添加到python集中?

来自分类Dev

有没有一种快速的方法可以将另一个类似 JSON 的元素添加到 JSON 中?

来自分类Dev

开关盒不间断是一种不好的做法吗?

来自分类Dev

在视图中读取文件是一种不好的做法吗?

Related 相关文章

  1. 1

    将事件的逻辑以一种单独的方法添加到触发该事件的方法中,这是一种很好的做法吗?

  2. 2

    扩展骨干集合以使用自定义方法添加逻辑是一种不好的做法吗?

  3. 3

    这在 PHP 中是一种不好的做法吗?

  4. 4

    使用通用的FindViewById是一种不好的做法吗?

  5. 5

    使用通用的FindViewById是一种不好的做法吗?

  6. 6

    PHPUnit:在一个测试中对模拟方法使用多个断言是一种不好的做法吗?

  7. 7

    PHPUnit:在一个测试中对模拟方法使用多个断言是一种不好的做法吗?

  8. 8

    将函数名称存储在变量中并使用变量调用函数是一种不好的做法吗?

  9. 9

    在C ++中,将参数包用作初始化列表是一种不好的做法吗?

  10. 10

    将线程局部值保存在静态final字段中是一种不好的做法吗?

  11. 11

    在Java中,使用nextLine()重新分配给相同的字符串变量是一种不好的做法吗?

  12. 12

    在Java游戏循环中使用“ SwingUtilities.invokeLater()”是一种不好的做法吗?

  13. 13

    在Java游戏循环中使用“ SwingUtilities.invokeLater()”是一种不好的做法吗?

  14. 14

    如何使用一种方法检查要添加到数组中的新元素是否尚未添加?

  15. 15

    在SQLalchemy中混合使用ORM和显式SQL是一种不好的做法吗?

  16. 16

    有没有一种方法可以将空元素添加到Javascript数组中?

  17. 17

    有多少种方法可以将元素添加到列表中,哪一种是最快的?

  18. 18

    将虚拟方法添加到超类中以便子类可以覆盖它是一种好习惯吗?

  19. 19

    在PHP中以一种语法将多组命名元素添加到数组

  20. 20

    在一个元素中使用多个供应商标签是一种不好的做法吗?

  21. 21

    在一个元素中使用多个供应商标签是一种不好的做法吗?

  22. 22

    寻找一种将JavaScript文件添加到页面中的方法

  23. 23

    将静态属性包含在存储库中可以吗,或者这是一种不好的做法?

  24. 24

    lua:声明表“托管”所有图形元素是一种不好的做法吗?

  25. 25

    JavaScript类,添加这样的事件侦听器是一种不好的做法吗?

  26. 26

    有没有一种方法可以将一行中的多个元素添加到python集中?

  27. 27

    有没有一种快速的方法可以将另一个类似 JSON 的元素添加到 JSON 中?

  28. 28

    开关盒不间断是一种不好的做法吗?

  29. 29

    在视图中读取文件是一种不好的做法吗?

热门标签

归档