我正在尝试编写一个包装方法来为我的日志消息添加方法名称和用户ID。我使用的String.format撰写消息结构,但问题带有通过的String.format()String.format打印地址,而不是可变长度字符串
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);
}
调用上述方法作为
logMessage(methodName, userId, "Some text here: %s",
"test"));
上述呼叫打印
可变参数的解释someMethod:: User:1266 : Some text here: [Ljava.lang.Object;@705a8dbc
为什么String.format字符串的“打印地址”是“test”?
在这里:*** @ 705a8dbc ***是散列码,而不是地址...对象必须覆盖toString方法... –
哦,是的,谢谢你纠正,但“测试”是一个字符串 – learningtocode
做我们将其作为https://stackoverflow.com/questions/409784/whats-the-simplest-way-to-print-a-java-array的副本来关闭它? – 2017-07-29 18:25:28