ログメッセージにメソッド名とユーザIDを接頭辞として付加するラッパーメソッドを記述しようとしています。String.format varargsの文字列ではなくアドレスを出力する
logMessage(methodName, userId, "Some text here: %s",
"test"));
上記コール印刷物として上記のメソッドを呼び出す)
private String logMessage(@NonNull String methodName, @NonNull String userId, @NonNull String message, Object... arguments) {
//String temp = String.format(message, arguments);
//String msg = String.format("%s:: User:%s : %s", methodName, userId, temp);<--This works
String msg = String.format("%s:: User:%s : " + message, methodName, userId, arguments);<--This prints address of arguments object
log.info(msg);
}
を私はメッセージ構造を構成するString.Formatのを使用していますが、問題は、String.Formatの(で可変引数の解釈が付属しています
someMethod:: User:1266 : Some text here: [Ljava.lang.Object;@705a8dbc
なぜString.formatは文字列 "test"のアドレスを出力しますか?
ここでは*** @ 705a8dbc ***はハッシュコードであり、アドレスではありません...オブジェクトはtoStringメソッドをオーバーライドする必要があります... –
ああ、訂正していただきありがとうございますが、 "test"は文字列です – learningtocode
Doこれをhttps://stackoverflow.com/questions/409784/whats-the-simplest-way-to-print-a-java-arrayの複製として閉じますか? –