如何在非静态ArrayList中使特定元素静态化?

时间:2017-02-12 04:45:17

标签: java arraylist static

有没有办法在非静态ArrayList中添加静态元素?

我有我的Collaborator类,这个类有一个Projects Arraylist。问题是,我的Project类有一个编辑项目的方法,但是当我编辑时,它不会更新我创建的协作者的Project ArrayList中的元素。

手动更新需要我在Collaborators ArrayList中运行Projects Arraylist来搜索哪些协作者拥有我正在编辑的项目。

我在Main类中创建了一个静态Project对象,当我编辑它时,它似乎有效。但是我无法在方法中创建静态对象。

class Collaborator {
String name;
String email;
ArrayList<Project> projects = new ArrayList<>();

我试图让整个ArrayList保持静态,但它使我创建的所有新协作者都拥有相同的项目,我不想发生这种情况。

提前致谢。

3 个答案:

答案 0 :(得分:1)

  

如何在非静态ArrayList中使特定元素静态化?

这是不可能的。

它甚至没有意义。

static关键字仅对变量和方法(以及不同上下文中的类)有意义。集合的元素不是变量。

如果您向我们展示了代码的相关部分,我们可以建议您应该做什么。但是你现在的方法是(正如他们所说)“咆哮错误的树”。

  

我的Project类有一个编辑项目的方法,但是当我编辑时,它不会更新我创建的协作者的Project ArrayList中的元素。

有许多可能的解释。但是我们需要看代码:

  • 您声明并初始化ArrayList并将Project添加到其中
  • 您可以在其中调用方法来修改Project

  • 执行Project编辑的代码(方法?)。

答案 1 :(得分:1)

我没有完全理解你的问题,但仍然试图帮助你解决问题。

  

我有我的Collaborator类,这个类有一个Projects Arraylist。问题是,我的Project类有一个编辑项目的方法,但是当我编辑时,它并没有更新我创建的协作者的Project ArrayList中的元素。

如果你正确地做事,那是不可能的。假设您要调用Project类的方法,该方法对对象的属性进行一些编辑。那么你应该做这样的事情。

projects.get(i).function_name()

您正在调用Project ArrayList中第i个projects对象的函数,该对象实际上是从ArrayList更新对象。

这部分问题,my Project class has a method to edit a project, but when I edit让我怀疑你可能做错了什么。

编辑意味着,您是否正在更新项目类对象?您要调用哪个对象的方法来更新该对象?显示代码将有助于我们更好地了解您的问题。

我坚信您不需要将ArrayList设置为静态,因为您始终可以通过调用ArrayList<Project> projects类所需的方法来更新Project的成员对象。

答案 2 :(得分:1)

我建议你可能在哪个地方拿一个项目的副本并编辑副本,而不是原版?

检查您将项目放入arraylist的位置,在哪里将其删除,以及在哪里编辑它们 - 如果您使用以下内容:

projects.add(new Project(y))

然后你要放一份原件&#39; y&#39;在那里投影,当你编辑&#39;时,副本不会改变。