有没有办法在非静态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保持静态,但它使我创建的所有新协作者都拥有相同的项目,我不想发生这种情况。
提前致谢。
答案 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;时,副本不会改变。