【发布时间】:2019-03-15 21:30:15
【问题描述】:
我需要帮助!我正在尝试从 android 项目中的另一个类中的一个类访问静态变量的值。这是静态类...
public class NamesStore {
private static NamesStore sNamesStore ;
private static List<Name> sNames = new ArrayList<>();
public static NamesStore getInstance() {
if (sNamesStore == null) {
return new NamesStore();
} else {
return sNamesStore;
}
}
public List<Name> getNames(){
return sNames;
}
}
现在在其他类中,我尝试让静态变量使用该值,但在使用之前对其进行修改...
public class Utils{
public static removeTheseNamesFromTheGeneralNames(List<Name> namesToBeRemoved){
List<Name> names = NamesStore.getInstance().getNames();
names.removeAll(namesToBeRemoved);
return names;
}
}
当我调用removeTheseNamesFromTheGeneralNames方法时,NamesStore中的静态变量也被修改了,我不知道为什么。?这是静态场的正常行为吗?如果是这样,请问如何在不更改静态字段中存储的值的情况下复制静态字段的值并进行修改。?我可以将其设为静态和最终解决此问题,但我还需要不时使用 setter 方法设置该静态变量。我在这里先向您的帮助表示感谢。
【问题讨论】:
-
变量没有被修改。你在做梦。变量引用的object被修改了,但那是因为你修改了它。你还期待什么?