java:如何阻止人们清除我的arraylist <string>当我使用getter方法?</string>

时间:2014-04-21 19:34:04

标签: java generics arraylist

我在A级宣布了我的arraylist:

private ArrayList<String> user = new ArrayList<String>();

我在同一个类(A类)中创建了我的getter方法:

public ArrayList<String> getUser()
{
return user;
}

然后在我的第二堂课(B班)中,我能够做到以下几点:

A UD = new A();
UD.getUser().clear();
UD.getErrmsg().clear();

如何阻止我的第二堂课清除第一堂课(A班)中的arraylist?

2 个答案:

答案 0 :(得分:5)

您可以使用Collections类中的方法:return Collections.unmodifiableList(user);您可能需要其他各种方法,包括地图等方法。只需看一下documentation

答案 1 :(得分:2)

getter setter的解决方案:

public void setMyList(final List<String> list)
{
    myList = new ArrayList<>(list);
}

public List<String> getMyList()
{
    return Collections.unmodifiableList(list);
}

使用番石榴:

public void setMyList(final List<String> list)
{
    myList = ImmutableList.copyOf(list);
}

public List<String> getMyList()
{
    return list;
}

如果你负担得起,可以使用番石榴。