2016-12-04 8 views
2

私のメインメソッドにintと2つの文字列を含むPersonの詳細を表示しようとしています。私はtoString()メソッドを使うつもりは知っていますが、このメソッドを使って各Personの詳細を正しく出力する方法を覚えていません。私はPersonクラスにtoString()メソッドを作成しなければならないと仮定していますが、私はこれに何を入れなければならないのかは分かりません。私の主な方法では、私はこれを入れました: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を上書きする必要があります。その署名:それはあなたが何かやっている必要がありますので、Stringを返すこと

public String toString() 

注:あなたが望むように、あなたがこれを改善することができますもちろん

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

は、私はデモのためにそれを書きました。


出力の意味については言及する価値があります。ドキュメントに記載されているとおり:クラスオブジェクトの

toString方法は、「@」 のオブジェクトがインスタンスであるクラス名からなる文字列で、符号 文字を返し、符号なしオブジェクトのハッシュ コードの16進表現。言い換えれば、この方法は、の値に 等しい文字列を返します:

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アノテーションは、スーパークラスのメソッドをオーバーライドするために使用されます。

関連する問題