SLF4J varargs将第一个字符串解释为标记

时间:2015-11-01 22:52:02

标签: java android logging slf4j

使用时

log.trace("with name {}, duration {}, repetitions {}", name, duration, repetitions);

SLF4J抱怨如下

  

[javac] sourcefile.java:105:错误:不兼容的类型:字符串无法转换为标记
  [javac] log.trace(“with name {},duration {},repetitions {}”,
  [javac] ^
  [javac]注意:有些消息已被简化;使用-Xdiags重新编译:详细以获得完整输出
  [javac] 1错误

使用

log.trace("with name {}, duration {}, repetitions {}",
      new Object[]{name, duration, repetitions});

解决了这个问题,但看起来很笨拙。 (特别是因为API允许varargs)。

this answer似乎说升级到SLF4J 1.7可以解决问题,但是android-slf4j is at 1.6.1

有没有办法在SLF4J for Android中使用varargs构造函数?还有其他选择吗?

2 个答案:

答案 0 :(得分:2)

似乎是API中的错误。

使用了Varargs,但是对于Marker方法,还有定义了1,2和3个参数的方法。

log.trace(Marker, Object...)
log.trace(Marker, Object)
log.trace(Marker, Object, Object)
log.trace(Marker, **Object**, Object, Object)

然而,String API只有varargs和1和2个arg方法。

log.trace(String, Object...)
log.trace(String, Object)
log.trace(String, Object, Object)

对我来说,Varargs可以使用1,2或4个参数。

它只有3个参数的问题。

通过将突出显示的对象更改为字符串,将其修复为1.7。

答案 1 :(得分:1)

尝试使用以下示例代码解决您的问题:

$( window ).load(function() {