2012-03-31 75 views
0

我有一個訪問數組的問題,該數組在其類中定義了非靜態變量。從另一個類訪問非靜態變量

這個數組的元素完全由另一個類添加(稱爲「add」),所以我無法達到這個類。在我的課,我需要從「添加」填充「A」類(其中有數組)的數組。由於它不是靜態的,所以當我使這個「A」類的新屬性成爲新對象時,忘記填充一個。

我的問題;有沒有辦法讓這個非靜態數組不失去它的元素?

+0

[非靜態變量不能從靜態上下文(java)]引用的可能重複](http://stackoverflow.com/questions/2559527/non-static-variable-cannot-be-referenced-from-a -static-context-java) – EJP 2012-03-31 08:57:38

回答

0

因爲它不是靜態的,所以當我使這個「A」類的新屬性成爲新對象時,忘記填充一個。

嗯是的 - 你需要添加值的實例。我們不能告訴你怎麼做,因爲我們對代碼的瞭解不夠多(畢竟,你還沒有看到它)。它是一個數組的事實是無關緊要的 - 實例變量的全部重點是每個實例都有自己的一組變量來表示該對象的狀態。如果您需要特定對象的狀態,則需要對該對象的引用。另外,你通常不應該直接訪問不同類的變量 - 變量應該是私有的,並且在適當的時候使用屬性來訪問數據。 (不是意味着每個變量都有一個屬性,通常你不想直接暴露這個值 - 相反,你需要暴露作用於整個對象的方法。知道你的對象是什麼意思代表)

1

很難從你的描述中知道,但也許你只需要添加一個'getter'方法到包含你想要的數組的類中,然後在包含要從中訪問數組的類的數組。

public 'ArrayType' getArray() { 
    return array; 
} 

與您的陣列的類型和「數組」與你的陣列的名稱替換「數組類型」。

這會給你對數組的引用,以便你可以對它內部的內容執行操作。

如果您還沒有意識到,當您需要從另一個類訪問對象的實例變量時,這是相當標準的做法。

+0

我最初的想法是一個getter,但我有一種感覺,它也可能是一個僅僅使數組變成靜態的情況。對我來說,像user1304752試圖從同一個類的兩個實例中訪問一個實例變量,並希望返回相同的對象,這聽起來像是一個靜態變量的完美情況。 – charlemagne 2012-03-31 08:47:06

+0

@zandomatter:不,這聽起來像是兩個班級意識到同一實例的完美情況。沒有跡象表明這意味着成爲真正的全球性國家。 (我同意,雖然訪問似乎不是問題。) – 2012-03-31 10:34:14