この問題は、次のコードで見つけることができます。
def debug[T](format: String, arg1:T, arg2:Any, args:Any*):T = {
logger.debug(format, (arg1 :: arg2 :: args.toList).toArray)
arg1
}
2 番目のパラメーターとして渡すのは Any の配列であるため、このコードは SLF4J のデバッグ メソッドを呼び出す必要があります。
public void debug(String format, Object[] argArray);
まだ
public void debug(String format, Object arg);
代わりに呼び出されます。
例を挙げましょう。
電話すると
debug("The four parameters are {} as String, {} as Integer, {} as String and {} as Integer.", "1", 2, "3", 4)
記録する
DEBUG - The four parameters are [1, 2, 3, 4] as String, {} as Integer, {} as String and {} as Integer.
それ以外の
DEBUG - The four parameters are 1 as String, 2 as Integer, 3 as String and 4 as Integer.
注1: 最初の呼び出しはscala.Array Scaladocに基づいて機能すると想定しました。
多相配列を表します。Array[T] は、Java の T[] に対する Scala の表現です。
注 2: 私の質問の元となったコードは、https://github.com/alexmsmartins/UsefullScalaStuff/blob/master/src/main/scala/alexmsmartins/log/LoggerWrapper.scalaにあります。
これは、Scala プロジェクトで使用する slf4j の小さなラッパーです。