java - 返回对象值

时间:2010-12-25 14:40:22

标签: java object

您好我有以下代码:

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;
}
}

6 个答案:

答案 0 :(得分:4)

您已经收到了想要的对象。

您看到的是这些对象的内部表示。

您必须遍历它们并调用各自的方法来查看您可能想要查看的信息。

如果您对这些结果不满意,则必须覆盖toString以便为您提供更有意义的信息。

<强>更新

看到您的修改后,您应该在toString课程中添加Person类似的内容:

@Override
public String toString() {
    return "Name: " + name + ", number: " + nbr; 
}

顺便说一句,你将nbr存储为一个字符串,显然它应该是一个整数。因此,我建议将其类型更改为intInteger

答案 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)