2017-02-12 12 views
0

Есть ли способ добавить статический элемент в нестатический ArrayList?Как сделать определенные элементы статичными в нестационарном ArrayList?

У меня есть класс Collaborator, и у этого класса есть проект Arraylist. Дело в том, что у моего класса Project есть метод для редактирования проекта, но когда я его редактирую, он не обновляет элемент в Project ArrayList в созданных мной сотрудниках.

Обновление вручную потребует от меня запускать проекты Arraylist внутри моего Collaborators ArrayList, чтобы найти, у кого есть этот проект, который я редактирую.

Я создал объект статического проекта в основном классе, и когда я его редактирую, он работает. Но я не могу создавать статические объекты внутри методов.

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

Я пытался сделать все ArrayList статична, но она делает все новые сотрудники я создаю имеют одни и те же проекты, которые я не хочу, чтобы это произошло.

Заранее спасибо.

+0

Если я это правильно понимаю: редактирование экземпляра проекта не отражается в экземпляре Project в списке? – efekctive

+0

Покажите метод, который вы используете для добавления экземпляра класса 'Project' в ArrayList' projects' в классе 'Collaborator'. –

+0

«Мой класс Project имеет метод редактирования проекта, но когда я редактирую_, он не обновляет элемент». Как вызвать метод для редактирования экземпляра класса '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, и у этого класса есть проект Arraylist. Дело в том, что у моего класса Project есть метод для редактирования проекта, но когда я его редактирую, он не обновляет элемент в Project ArrayList в созданных мной сотрудниках.

Это невозможно, если вы делаете все правильно. Предположим, вы хотите вызвать метод класса Project, который выполняет некоторые изменения в свойстве объекта. Тогда вы должны сделать что-то подобное.

projects.get(i).function_name() 

Вы вызываете функцию из i-го объекта Project от projects ArrayList, который на самом деле обновление объекта из ArrayList.

Эта часть вашего вопроса, my Project class has a method to edit a project, but when I edit вынуждает меня сомневаться в том, что, возможно, вы что-то не так.

Редактирование означает, вы обновляете объект класса проекта? Какой метод объекта вы вызываете для обновления этого объекта? Отображение кода поможет нам понять вашу проблему.

Я твердо верю, что вам не нужно ставить ваш ArrayList, потому что вы всегда можете обновить объект-член ArrayList<Project> projects, вызвав необходимый метод класса Project.

+0

Я делал что-то неправильно. Я новичок в Java, когда заметил, что это не обновление, я думал, добавляя объект к Arraylist, он создал копию вместо передачи ссылки. Но я неправильно ее редактировал. Я редактировал копию вместо редактирования нужного объекта.Спасибо за вашу помощь. –