【问题标题】:Java Object referenceJava 对象引用
【发布时间】:2013-05-15 18:36:55
【问题描述】:

这是关于另一个类实例变量返回的 ArrayList 的使用。

Class A {

    //assigned list of string to it.
    private List < String > newAl;
    //returns the list
    public List < String > getList() {
        return newA1;
    }
}

Class Test {

    public void go() {
        List < String > list = a.getList();
        list.add("");
    }

}

在测试类中,当我检索列表并操作列表时。由于引用,类 A 列表也被操作。如果 A 是第三方代码的一部分。如何更正测试类中的代码,以便原始对象不受影响?

【问题讨论】:

  • 返回newAl的副本?
  • 发送前需要克隆列表。
  • 或发送后,取决于A实际上是什么。
  • 感谢回复。我只能操作Test类。

标签: java object collections arraylist


【解决方案1】:

ArrayList constructor 需要一个 Collection,因此您可以使用它:

List<String> list = new ArrayList(a.getList());

我认为这样做会更好,但是根据您的操作,您可能希望在 getter 中构造新的 List。这也有助于类型隐藏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    相关资源
    最近更新 更多