在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在他的回答中提到的神秘的东西?