您好我有以下代码:
public List<Person> findAll() {
List<Person> copy = new ArrayList<Person>();
for (Person person : personer) {
copy.add(person);
}
return copy;
}
但是当我测试这个时,我只检索以下而不是值:
[Person @ 15c7850,Person @ 1ded0fd, 人@ 16a9d42]
我如何获得价值,而不是像上面那样。在我插入这个人的地方,代码看起来像这样:
public boolean insert(String name, String nbr) {
if (containsName(name)) {
return false;
}
Person person = new Person(name, nbr);
personer.add(person);
return true;
}
这是我的Person类:
class Person {
private String name;
private String nbr;
public Person (String name, String nbr) {
this.name = name;
this.nbr = nbr;
}
public String getName() {
return name;
}
public String getNumber() {
return nbr;
}
}
答案 0 :(得分:4)
您已经收到了想要的对象。
您看到的是这些对象的内部表示。
您必须遍历它们并调用各自的方法来查看您可能想要查看的信息。
如果您对这些结果不满意,则必须覆盖toString
以便为您提供更有意义的信息。
<强>更新强>:
看到您的修改后,您应该在toString
课程中添加Person
类似的内容:
@Override
public String toString() {
return "Name: " + name + ", number: " + nbr;
}
顺便说一句,你将nbr
存储为一个字符串,显然它应该是一个整数。因此,我建议将其类型更改为int
或Integer
。
答案 1 :(得分:2)
您正在获取List对象。您可以使用Person对象来获取所需的数据。要访问Person对象,请遍历列表。
List<Person> people = findAll();
for Person p : people {
String phoneNumber = p.phoneNumber();
String name = p.Name();
}
答案 2 :(得分:1)
如果在打印结果时需要更好的描述,请覆盖Person类中的toString()方法。
答案 3 :(得分:1)
在类Person
中输入类似的内容(不要更改方法名称!):
public String toString() {
return name;//change this line
}
答案 4 :(得分:1)
您正在打印一个Object,该Object具有从Object类继承的默认toString。这将打印出它所在的对象类型及其在内存中的位置(即:Person @ 1ded0fd)。
如果您希望看到其他内容,可以覆盖类中的toString方法:
public class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public String toString() {
return this.name;
}
}
如果您的课程如上所示,这将允许您执行以下操作:
Person p = new Person("John");
System.out.println(p);
> John
您也可以按原样抓取它并打印出您想要的任何信息,而不会覆盖toString方法。
Person p = new Person("John");
System.out.println(p.getName());
> John
答案 5 :(得分:0)
您从ArrayList检索的方面的Person或属性是什么?这种值(Person @ 15c7850等)显示了当你使用时由JVM分配的Person的对象随机id
System.out.print(copy)
。