Java toString()未打印正确的变量

Java toString()未打印正确的变量,java,tostring,println,Java,Tostring,Println,我在Java中有这样一个类: 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();

我在Java中有这样一个类:

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);
    }
}

不是获取每个项目的名称,而是获取数组中每个项目的最后一个项目的名称。有什么建议吗?

在你的
类型
类中,你正在将你的
名称
标记为
静态
,因此当打印
类型.toString()
时,你总是只有一个值。 如果要打印列表中的所有成员,请使用:

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

Type
类中,您将
name
标记为
static
,因此在打印
Type.toString()
时,始终只有一个值。 如果要打印列表中的所有成员,请使用:

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


尝试删除变量名的
静态
单词,然后重试;)我同意这是一个重复,但公平地说,我不认为我会从谷歌搜索中找到答案,因为我认为这是一个在类
类型
私有静态字符串名中字符串的问题
应该是
私有字符串名
。它不是一个静态字段(或者不应该是您在构造函数中使用它的方式。请尝试删除变量名的
static
单词,然后重试;)我同意这是一个重复的字段,但公平地说,我不认为我会从谷歌搜索中找到答案,因为我认为这是一个在类
Type
私有静态字符串名中字符串的问题
应该是
私有字符串名
。它不是一个静态字段(或者不应该是您在构造函数中使用它的方式。谢谢!这很有效。还感谢@kucing_terbang的评论!我会在可以的时候接受它。他正在尝试从toString()返回,不要打印到控制台。如果这是您的答案,请将其标记为正确答案是的,我知道,我知道他理解我的意思。+1.请注意,好的IDE和编译器会对此代码发出警告,因为
this.name
name
为静态时会产生误导。谢谢!这很有效。还感谢@kucing\u terbang的评论!如果可以的话,我会接受的。他正试图从toString()回来,不要打印到控制台。如果这是您的答案,请将其标记为正确答案是的,我知道,我知道他理解我的意思。+1.请注意,好的IDE和编译器会对此代码发出警告,因为
this.name
name
是静态的情况下会产生误导。请添加一些带有答案的文本,解释您的答案如何帮助操作或帮助其他人解决问题阅读一些带答案的文本,解释你的答案如何帮助OP或其他人解决问题
@Override
public String toString() {
    String s = "";
    for(Type t : list) {
        s += t;
    }
    return s;
}