[英]java - return object value
嗨,我有以下代码:
public List<Person> findAll() {
List<Person> copy = new ArrayList<Person>();
for (Person person : personer) {
copy.add(person);
}
return copy;
}
但是当我测试这个时,我只检索以下内容而不是值:
[Person @ 15c7850,Person @ 1ded0fd,Person @ 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;
}
}
您已经收到了想要的对象。
您所看到的是这些对象的内部表示。
您必须遍历它们并调用它们各自的方法以查看您可能想查看的信息。
如果您对这些结果不满意,则必须重写toString
才能为您提供更多有意义的信息。
更新 :
看到您的编辑后,您应该在Person
类中添加类似于此的toString
:
@Override
public String toString() {
return "Name: " + name + ", number: " + nbr;
}
顺便说一句,您将nbr
存储为字符串,很明显它应该是整数。 因此,我建议将其类型更改为int
或Integer
。
您将获得一个List对象。 您可以使用Person对象来获取所需的数据。 要访问Person对象,请遍历列表。
List<Person> people = findAll();
for Person p : people {
String phoneNumber = p.phoneNumber();
String name = p.Name();
}
如果要在打印结果时有更好的描述,请重写Person类中的toString()方法。
在Person
类中放入类似的内容(不要更改方法名称!):
public String toString() {
return name;//change this line
}
您正在打印一个具有从Object类继承的默认toString的Object。 这将打印出对象的类型及其在内存中的位置(即: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
您要从ArrayList检索哪个值或类Person的属性? 这种值(Person @ 15c7850等)表明,当您使用JVM时分配的Person的对象随机ID
System.out.print(copy)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.