2016-12-04 5 views
2

Я пытаюсь распечатать детали Person, которые содержат int и две строки в моем основном методе. Я знаю, что я должен использовать метод toString(), но я не помню, как бы я использовал этот метод для правильной печати деталей каждого человека. Я предполагаю, что должен создать метод toString() в своем классе Person, но я не уверен, что я должен внести в это. В моем основном методе я положил это:конвертирующий объект типа Person toString()?

System.out.println("Person: " + Person.Ben.toString()); 
System.out.println("Person: " + Person.Georgia.toString()); 
System.out.println("Person: " + Person.Tom.toString()); 
System.out.println("Person: " + Person.Beth.toString()); 

Что было бы внутри здесь, чтобы это сделать?

public Person toString() 
{ 
    //what goes here? 
} 

На данный момент я получаю этот выход:

Person: [email protected] 
Person: [email protected] 
Person: [email protected] 
Person: [email protected] 

Любой помощь ценятся, спасибо.

+0

После рассмотрения этого вопроса я согласен, я думаю, что я дубликат, жаль, не найдя его, прежде чем отправлять. Я бы удалил это, если мог, но не могу, поскольку у него уже есть ответы. – Ben

ответ

3

Вы должны переопределить Object#toString. Его подпись:

public String toString() 

Обратите внимание, что она возвращает String, так что вы должны делать что-то вроде:

@Override 
public String toString() 
{ 
    return this.name + " " + this.age; 
} 

Конечно, вы можете улучшить это, как вы хотите, я просто написал ее для демонстрации.


Следует упомянуть о значении результата, который вы получаете сейчас. Как указано в документации:

toString метод класса Object возвращает строку, состоящую из имя класса из которого объект является экземпляром, на-знак символ «@», и без знака шестнадцатеричное представление хеша код объекта. Другими словами, этот метод возвращает строку, равную к значению:

getClass().getName() + '@' + Integer.toHexString(hashCode())

1

toString метод исходит из родительского класса под названием java.lang.Object и его подпись public String toString(), так что ваш toString должно быть:

@Override 
public String toString() { 
    StringBuilder sb = ... 
    sb.append("Name: "); 
    sb.append(name); 
    sb.append("Age: "); 
    sb.append(age); 
    return sb.toString(); 
} 

@Override аннотаций используется для переопределения метода суперкласса в.

Смежные вопросы