2017-02-12 61 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添加對象時,它創建了一個副本,而不是傳遞引用。但我錯誤地編輯了它。我正在編輯一個副本,而不是編輯正確的對象。謝謝你的幫助。 –

相關問題