在Java中显示类的内容时出现问题

在Java中显示类的内容时出现问题,java,class,arraylist,Java,Class,Arraylist,我的问题是我有一个类,其中有另一个类的元素列表 public class Branch { private ArrayList<Player> players = new ArrayList<Player>(); String brName; public Branch() {} public void setBr(String brName){this.brName = brName;} public String getBr()

我的问题是我有一个类,其中有另一个类的元素列表

public class Branch
{
    private ArrayList<Player> players = new ArrayList<Player>();
    String brName;
    public Branch() {}
    public void setBr(String brName){this.brName = brName;}
    public String getBr(){return brName;}
    public ArrayList<Player> getPlayers() { return players; }
    public void setPlayers(ArrayList<Player> players) { this.players =new ArrayList<Player>(players);  }
}
public class Player
{
    private String name;
    private String pos;
    private Integer salary;
    private Integer number;

    public Player(String name, String pos, Integer salary, Integer number)
    {
        this.name = name;
        this.pos = pos;
        this.salary = salary;
        this.number = number;
    }

    public Player(){}

    public String getName() { return name; }
    public String getPos() { return pos; }
    public Integer getSalary() { return salary; }
    public Integer getNumber() { return number; }

    public void setName(String name) { this.name = name; }
    public void setPos(String pos) { this.pos = pos; }
    public void setSalary(Integer salary) { this.salary = salary; }
    public void setNumber(Integer number) { this.number = number; }
}

我写这篇文章只是为了尝试如何显示。我创建了一个玩家数组和分支,所以它们已经定义好了。问题是
getPlayers()
没有给我任何结果。方法是什么?

当您尝试
println
或连接ArrayList时(就像您在执行
“”+myBranch[0].getPlayers()
时所做的那样),将调用方法
ArrayList.toString()
,以返回列表内容的字符串表示形式

ArrayList.toString()
将返回一个字符串,其中包含列表中每个元素的
toString()
结果(此行为实际上是在其父类之一
AbstractCollection
中定义的)

由于您的Player类不会覆盖
java.lang.Object
提供的
toString()
实现,因此输出可能类似于
packagename。Player@a8f123


因此,如果您希望在对
Player
对象列表调用
ArrayList.toString()
时获得有意义的输出,您应该重写
toString()
Player
中提供希望返回的
播放器的字符串表示形式。

当您尝试
打印ln
或连接ArrayList时(就像您在执行
时所做的那样)(+myBranch[0]。getPlayers()
,方法
ArrayList.toString()调用
以返回列表内容的字符串表示形式

ArrayList.toString()
将返回一个字符串,其中包含列表中每个元素的
toString()
结果(此行为实际上是在其父类之一
AbstractCollection
中定义的)

由于您的Player类不会覆盖
java.lang.Object
提供的
toString()
实现,因此输出可能类似于
packagename。Player@a8f123


因此,如果您希望在对
Player
对象列表调用
ArrayList.toString()
时获得有意义的输出,您应该重写
toString()
Player
中,提供您希望返回的
播放器的字符串表示形式。

++按照matt b的说法。另一种方法是重写toString on分支,以便循环遍历数组列表并返回每个播放器的信息(可能调用matt b推荐的toString是在Player类上定义的)。

++按照matt b的说法。另一种方法是重写分支上的toString,以便它在数组列表中循环并返回每个播放器的信息(可能调用matt b推荐的toString是在Player类上定义的).

给玩家类一个toString()方法,如下所示:

@Override
public String toString() {
    return "Player [name=" + name + ", number=" + number + ", pos=" + pos
            + ", salary=" + salary + "]";
}

为播放器类提供如下toString()方法:

@Override
public String toString() {
    return "Player [name=" + name + ", number=" + number + ", pos=" + pos
            + ", salary=" + salary + "]";
}

现在还没有人说过,通过使用向量,你可以简单地使用
this.add()
要初始化新玩家,这当然会导致玩家的深度复制,但他们在自己的小房间里的位置会很好,他们可以从那里开始游戏。这比每次宣布新玩家时制作一个新的阵列要好。

没有人说过的是,通过使用向量,以你现在的方式,给你提供了操作portunity只需处理
this.add()
要初始化新玩家,这当然会导致玩家的深度复制,但他们在自己的小房间里就可以了,他们可以在那里玩。这比每次宣布新玩家时制作一个新的玩家阵列要好。

什么是“无结果”-是一个空列表,还是你得到了像matt b me这样神秘的东西在他的回答中提到了什么?什么是“没有结果”-是一个空的列表,还是你得到了一些像马特b在他的回答中提到的神秘的东西?