根据 Benoit 对您想要实现的目标的想法,我认为最好的方法是使用 Map (如果您想要线程安全,则使用 ConcurrentMap ):
ConcurrentMap<String, List<String>> myData = new ConcurrentHashMap<>();
这样您就可以通过您提供的 id 来处理任何列表。
List<String> myList = myData.get(id);
如果您想限制列表的访问器(例如只提供 add 方法),您需要将列表封装在一个类中:
public final class Example {
private final List<String> docs = new ArrayList<>();
public boolean addDoc(final String doc) {
return docs.add(doc);
}
}
然后使用 Map 如下:
ConcurrentMap<String, Example> myData = new ConcurrentHashMap<>();
并添加这样的文档:
myData.get(id).addDoc(myDoc);
希望这可以帮助...
关于评论中讨论的主题:设置变量
您有这样的课程:
public class Example {
public String var;
}
像这样的一个例子
Example ex = new Example();
您可以使用
ex.var = "abc";
有了这样的课程
public class Example {
private String var;
public void setVar(String var) {
this.var = var;
}
}
采用
ex.setVar("abc");
管理多个实例:
1)您的网络服务获取带有 id 的信息
2)您的服务器应用程序存储一个实例映射,您可以通过 ID 访问它(参见上面的映射示例)。在您调用的网络服务中
Example ex = ReportHolder.getReport(id);
假设这样的课程:
public class ReportHolder {
private static ConcurrentMap<String, Example> map = new ConcurrentMap<>();
public static Example getReport(final String id) {
return map.get(id);
}
}
3)然后你可以操作实例。
确保您正确理解术语变量、类、实例和静态。否则将很难理解您的错误发生的原因。