vac*_*ach 13 java-8 kotlin log4j2
在log4j2中,我们有一个方便的功能,描述为
// Java-8 style optimization: no need to explicitly check the log level:
// the lambda expression is not evaluated if the TRACE level is not enabled
logger.trace("Some long-running operation returned {}", () -> expensiveOperation());
Run Code Online (Sandbox Code Playgroud)
我试图在kotlin中使用它
log.debug("random {}", { UUID.randomUUID() })
Run Code Online (Sandbox Code Playgroud)
这将打印
random Function0<java.util.UUID>
Run Code Online (Sandbox Code Playgroud)
我们如何使用kotlin使用lambda参数记录?或者我们如何明确告诉kotlin要调用哪种方法?
JB *_*zet 12
问题是debug()重载,并有另一种方法将vararg对象作为参数.Kotlin选择那个重载而不是一个Supplier<?>参数作为参数,因为它不知道lambda表达式应该是一个供应商.
只需将其指定为供应商:
log.debug("random {}", Supplier { UUID.randomUUID() })
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1126 次 |
| 最近记录: |