2017-02-12 101 views
0

有没有办法在非静态ArrayList中添加静态元素?如何在非静态ArrayList中使特定元素静态化?

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

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

我在Main类中创建了一个静态的Project对象,当我编辑他时,它似乎工作。但是我不能在方法中创建静态对象。

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

我试图让整个ArrayList中静态的,但它让我所有新创建的合作者具有相同的项目,我不希望发生的事情。

在此先感谢。

+0

如果我的理解正确:项目实例中的编辑不会反映在列表中的项目实例中? – efekctive

+0

显示用于向'Collaborator'类中的'projects' ArrayList添加'Project'类的实例的方法。 –

+0

“我的Project类有一个编辑项目的方法,但_when edit_时,它不更新元素”。如何调用该方法来编辑'Project'类的实例? –

回答

1

我会建议,也许在某个地方,你正在一个项目的副本,并编辑副本,而不是原来的?

检查你把项目纳入ArrayList中,在那里你把它们带出,并在那里你编辑他们 - 如果你使用像什么:

projects.add(new Project(y)) 

然后你把一个副本原来'y'项目在那里,当你编辑'y'时,副本不会改变。

1

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

这是不可能的。

它甚至没有意义。

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

如果您向我们展示了您的代码的相关部分,我们可能会建议您应该做什么。但是你目前的做法是(如他们所说)“吠叫错误的树”。


我的项目类有编辑项目的方法,但是当我编辑,它不会在我创建了合作者更新项目ArrayList中的元素。

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

  • ,你声明并初始化ArrayList并添加Project
  • ,你调用该方法来编辑Project,并且

  • 代码(方法?),编辑Project

+0

你能显示主要功能吗? –

+1

@AbdelmjidELKIHEL - 你在跟我说话吗? –

+0

你说得对,它没有意义。我是Java的初学者,我认为向ArrayList添加对象时,它创建了一个副本,但它添加了引用,如指针。感谢您的回答。我认为它创建了一个副本的原因是因为我错误地编辑了它,所以它没有更新。但感谢这里的答案,我修正了它。谢谢。 –

1

我完全不理解您的问题,但仍尝试帮助您解决问题。

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

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

projects.get(i).function_name() 

要调用的函数第i个从projects的ArrayList这实际上是从更新的ArrayList中的对象Project对象。

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

编辑意味着,你在更新一个项目类对象吗?您正在调用哪个对象的方法来更新该对象?显示代码将帮助我们更多地了解您的问题。

我坚信你不需要让你的ArrayList成为静态的,因为你总是可以通过调用Project类所需的方法来更新ArrayList<Project> projects的成员对象。

+0

我做错了什么。我是Java的初学者,当我发现它没有更新时,我想,在向Arraylist添加对象时,它创建了一个副本,而不是传递引用。但我错误地编辑了它。我正在编辑一个副本,而不是编辑正确的对象。谢谢你的帮助。 –

相关问题