User
クラスのオブジェクトを含むArrayList
があります。私は、これらのオブジェクトを印刷するとき私が得た:オブジェクトの内容を正しく印刷する方法は?
を[ユーザー18fd984 @、18fd984 @ユーザ]
正しい方法でこれらのオブジェクトを印刷するには?
User
クラスのオブジェクトを含むArrayList
があります。私は、これらのオブジェクトを印刷するとき私が得た:オブジェクトの内容を正しく印刷する方法は?
を[ユーザー18fd984 @、18fd984 @ユーザ]
正しい方法でこれらのオブジェクトを印刷するには?
クラス内のメソッドtoString
をオーバーライドして、Javaが自動的に生成するデフォルト値ではなく、望ましい出力を生成します。例:あなたはすでにあなたのプロジェクトでは、この依存関係を使用している場合は、複雑なオブジェクトの場合
public class User {
private String name;
...
@Override
public String toString() {
return name;
}
}
、Apache Commons Langは、いくつかの便利な方法を提供しています。
PrintSteam
クラスから
print(Object obj)
メソッドのソースコードを
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
こんにちは、私はこのようなものを探していた – divine
ルック:
:String
クラスの
public void print(Object obj)
{
write(String.valueOf(obj));
}
と
public static String valueOf(Object obj)
{
return (obj == null) ? "null" : obj.toString();
}
ご覧のとおり、obj.toString()
が呼び出され、@Guidoガルシアの状態として、toString()
メソッドをオーバーライドすることは何が必要です。次のように
Object
クラスのtoString()
メソッドのデフォルトの実装は次のとおりです。
public String toString()
{
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
がこの質問に答えるためにはるかに遅すぎるかもしれないが、私は同じ問題にまでこだわった、また、いくつかのコードを書きましたいくつかの追加機能があります。
ここで解決策を探している場合は、一般的な解決策があります。これは間違いなくある反射を必要とするが、これは目的を解決する。
これは主にリンクの答えです。例えば、あなたの答えにブログの投稿の本質を提供したり、あなたのメソッドと別の答えに書かれている 'ToStringBuilder.reflectionToString'との違いを教えてください。 – SpaceTrucker
これは正しいです - デフォルトのObject toString出力。ユースケースに「正しい」と定義します。 –
オブジェクトの 'toString'は' getClass()。getName()+ '@' + Integer.toHexString(hashCode()) 'を返します。 GuidoGarcíaの答えごとにこのメソッドをオーバーライドする必要があります。 –