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

标签 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(){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; }
}

我的问题是打印一个分支的球员及其姓名、职位、工资、号码。 为此,我简单地尝试了这个:

String p1,p2;
int a1,a2;
p1 = input.readLine();
p2 = input.readLine();
a1 = Integer.parseInt(input.readLine());
a2 = Integer.parseInt(input.readLine());
players[0].setName(p1);
players[0].setPos(p2);
players[0].setSalary(a1);
players[0].setNumber(a2);
ptmp.add(players[0]);

myBranch[0].setPlayers(ptmp);

System.out.println(myBranch[0].brName +  "  " + myBranch[0].getPlayers());

我写这个只是为了尝试如何显示。我创建了一系列玩家和分支,因此它们已经定义了。问题是 getPlayers() 没有给我任何结果。有什么方法可以做到这一点?

最佳答案

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

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

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

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

关于java - 在 Java 中显示类的内容时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3005715/

相关文章:

java - 在这种情况下我怎样才能制作子列表列表......?

java - 错误 : Manifest merger failed with multiple errors, 查看日志

java - 无法使 JComboBox 更新 JFrame

python 类命名空间和 init 函数

c++ - 从具有不同签名的基类访问隐藏函数

java - .size() 方法有问题 (java)

java - 如何获取存储在列表中的变量的名称

java - Karate 框架 : how to get timestamp and append to a variable

java - Java中父类(super class)引用无法调用子类方法

ios - 一个文件还是多个?创建多个 ViewController 类