[英]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.