当报告的数量为one时,我希望输出使用单数名词。目前我一直在做这样的事情:
logger.debug("Got {} row{}", rows, rows == 1 ? "" : 's');
但这会变得乏味。
所以,我正在考虑一种方法,根据值返回整个字符串
"1 row"
或 "5 rows"
。 static String printable(int value, String name)
做起来很简单,但使用起来很乏味,它会被调用为 printable(rows, "row")
,这对于任何阅读代码的人来说都是多余的。
也许 Java 可以只用一个参数?其中之一:
printable(rows)
- 调用的方法查找传递给它的变量的 name 以构造名词(单数或复数取决于值)。printable("rows")
——调用的方法在调用者的作用域中查找变量的value(按指定名称)?类似的事情可以在编译时使用 C 预处理器完成,例如:
#define PRINTABLE(val) printable(val, #val)
Java 可以做到(在运行时)吗?
如果所有这些都可以被跳过,如果当前日志级别还不够详细,无法实际输出日志条目,那就太好了。
“Java 可以做到(在运行时)吗?”
不,
您可以尝试设置预处理器,但这看起来有些过头了。
也许是这个?
logger.debug("Got {}", formatRows(rows));