13

ArrayListクラスのいくつかのオブジェクトを含む がありますUser。これらのオブジェクトを印刷すると、次のようになりました。

[ユーザー@18fd984、ユーザー@18fd984]

これらのオブジェクトを正しい方法で印刷するには?

4

2 に答える 2

13

クラスのメソッドをオーバーライドしてtoString、Java が自動的に生成するデフォルト値ではなく、好みの出力を生成します。例:

public class User {
   private String name;
   ...
   @Override
   public String toString() {
       return name;
   }
}

複雑なオブジェクトの場合、プロジェクトでこの依存関係を既に使用している場合、Apache Commons Langはいくつかの便利なメソッドを提供します。

@Override
public String toString() {
   return ToStringBuilder.reflectionToString(this);
}
于 2012-05-08T18:03:27.200 に答える
1

クラスのprint(Object obj)メソッドのソース コードを見てください。PrintSteam

public void print(Object obj)
{
    write(String.valueOf(obj));
}

そしてクラスvalueOf(Object obj)の:String

public static String valueOf(Object obj)
{
    return (obj == null) ? "null" : obj.toString();
}

ご覧のとおり、obj.toString()呼び出され、@Guido García が述べているように、toString()メソッドのオーバーライドが必要です。

toString()クラスのメソッドのデフォルトの実装はObject次のとおりです。

public String toString()
{
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
于 2012-05-08T18:20:00.463 に答える