2016-11-25 76 views
-7

我有一個Person類,每個Person對象具有唯一的person(id類型)id。我也有一個靜態方法isAlreadyStored(String name),它應該檢查是否已經創建了這個名字的人。我無法通過爲所有創建的Person對象創建一個列表來解決這個問題,因爲我得到錯誤「非靜態變量不能從靜態上下文中引用」,但我沒有任何其他想法如何遍歷所有Person對象找到一個給定的名字。我如何解決這個問題?通過ID(Java)查找對象

+3

這是不可能的回答措辭這樣的問題。分享一些代碼和你得到的錯誤 – Mureinik

+0

請發佈您的完整課程代碼。也許你想從主方法(這是靜態的)調用非靜態方法? – Shem

+0

@Mureinik對於無法回答的問題(順便說一句:我同意),我們有驚人的答案。 – Seelenvirtuose

回答

1

顯然,爲了解決您的問題,您需要一個Person類的所有已創建實例的列表。您應該將其存儲在一個靜態變量中,然後在其上進行搜索。事情是這樣的:

final static allPeople List<Person> = new ArrayList<Person>(); 

然後,你可以用的東西,名單上的搜索是這樣的:

... 
if (allPeople.contains(aPerson)){ 
... 
0

誤差非靜態變量不能從靜態上下文引用意味着你試圖訪問在不脫離與關鍵字static定義的方法關鍵字static定義的變量。

例如

public class Main { 
    private int x = 3; 

    public static void main(String[] args) { 
     // Not possible 
     System.out.println(x); 
    } 
} 

而不關鍵字static定義的變量命名爲一個實例變量只能從一個實例方法(無關鍵字static定義的方法)來訪問。