2015-12-02 61 views
0

我在Java中這樣的類:的Java的toString()不打印正確的變量

public class Wrapper { 
    public static List<Type> list; 

    @Override 
    public String toString() { 
     return "List: " + this.list; 
    } 

    public static void main(String[] args) { 
     Wrapper w = new Wrapper(); 
     System.out.println(w); 
    } 
} 

和一類這樣的:

public class Type { 
    private static String name; 

    public Type(String n) { 
     this.name = n; 
    } 

    @Override 
    public String toString() { 
     return this.name; 
    } 
} 

非但沒有每個項目的名稱,我得到數組中每個項目的最後一個項目的名稱。有什麼建議麼?

+3

嘗試刪除'變量名static'字,然後再試一次;) –

+0

我會同意,這是一個重複,但公平起見,我不認爲我會發現谷歌搜索/搜索SO的答案,因爲我認爲這是一個toString的問題...類'''私人靜態字符串名稱的類型' – user1947561

+0

; '應該是'私人字符串名稱'。它不是一個靜態字段(或者不應該是你在構造函數中使用它的方式。) – ptierno

回答

6

在您的Type類中,您正在將您的name標記爲static,因此在打印type.toString()時,您始終只有一個值。 如果你要打印列表的所有成員,使用:

for(Type t : list){ 
    System.out.print(t.toString()); 
} 
+0

謝謝!這個工程。謝謝你也@kucing_terbang的評論!我會接受這個當我可以。 – user1947561

+1

他正在嘗試返回toString(),不打印到控制檯 –

+0

如果這是你的答案,請將其標記爲正確答案 – HungPV

-1
@Override 
public String toString() { 
    String s = ""; 
    for(Type t : list) { 
     s += t; 
    } 
    return s; 
} 
+0

添加一些文本和答案以解釋您的答案幫助OP或其他人解決問題 –