Java toString()没有打印正确的变量

use*_*561 0 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();
        System.out.println(w);
    }
}
Run Code Online (Sandbox Code Playgroud)

和这样的一个类:

public class Type {
    private static String name;

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

    @Override
    public String toString() {
        return this.name;
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到了数组中每个项目的最后一项的名称,而不是获取每个项目的名称.有什么建议?

小智 6

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

for(Type t : list){
   System.out.print(t.toString());
}
Run Code Online (Sandbox Code Playgroud)

  • +1.请注意,好的IDE和编译器会对此代码发出警告,因为当`name`是静态时,`this.name`会产生误导. (2认同)