【发布时间】:2015-09-02 21:27:35
【问题描述】:
这是我遇到的具体问题。我用的是SLF4J Logger (下面是变量logger的类型)
//After adding to a map
logger debug ("Adding {} = {}", key, value)
这是鼠标悬停在 Eclipse(和编译器)中告诉我的内容。
对重载定义的模糊引用,在 (x$1: String, x$2: Object*) 类型的 trait Logger 中进行方法调试和在 (x$1: String, x$2: Any, x 类型的 trait Logger 中进行方法调试$3: Any)单位匹配参数类型(字符串、字符串、字符串)
我明白他们为什么模棱两可。我当然不是在与编译器争论:)。我只想知道经验丰富的程序员是如何解决这个问题的。
以下是我可以使用的替代方法
-
创建和数组,并使用
Object*定义logger debug ("Adding {} = {}", Array(key, value):_*) -
投射到
Anylogger debug ("Adding {} = {}", key.asInstanceOf[Any], value.asInstanceOf[Any])
这两种方法都不是特别吸引人。社区对我有更好的方法或建议吗?
非常感谢!
【问题讨论】:
-
看起来这可能是一个已知问题 - 请参阅 here
-
我想就是这样。感谢您的帮助@Shadowlands!如果您可以将其发布为答案,我可以将问题标记为已解决,我们可以帮助社区。span>
-
通过字符串插值,我总是使用
logger debug (s"Adding $key = $value)这些数据。由于字符串插值是编译时间,它可能也更有效 -
@ArneClaassen 对不起我的无知。但是你的代码中的“s”是什么?
-
Scala 2.10 添加了字符串插值。 "s" 和其他类似的解释在这里:docs.scala-lang.org/overviews/core/string-interpolation.html