ArrayList
クラスのいくつかのオブジェクトを含む がありますUser
。これらのオブジェクトを印刷すると、次のようになりました。
[ユーザー@18fd984、ユーザー@18fd984]
これらのオブジェクトを正しい方法で印刷するには?
クラスのメソッドをオーバーライドして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);
}
クラスの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());
}