SLF4J可变参数将第一个字符串解释为标记
使用时
log.trace("with name {}, duration {}, repetitions {}", name, duration, repetitions);
SLF4J抱怨如下
[javac] sourcefile.java:105:错误:不兼容的类型:字符串不能转换为标记
[javac] log.trace(“带有名称{},持续时间{},重复{}”,
[javac] ^
[javac]注意:有些消息已被简化; 使用-Xdiags:verbose重新编译以获得完整输出
[javac] 1错误
运用
log.trace("with name {}, duration {}, repetitions {}",
new Object[]{name, duration, repetitions});
解决了这个问题,但似乎kludgey。 (尤其是因为API允许可变参数)。
通过这个答案似乎说升级到SLF4J 1.7将解决问题,但android-slf4j在1.6.1。
有没有办法在SLF4J for Android中使用可变参数构造函数? 有其他选择吗?
看起来像API中的错误。
可用可变参数,但对于标记方法,还有定义了具有1,2和3个参数的方法。
log.trace(Marker, Object...)
log.trace(Marker, Object)
log.trace(Marker, Object, Object)
log.trace(Marker, **Object**, Object, Object)
但是,字符串API只有可变参数和1和2个参数方法。
log.trace(String, Object...)
log.trace(String, Object)
log.trace(String, Object, Object)
对我来说,Varargs确实有1,2或4个参数。
它只有3个参数有问题。
通过将突出显示的对象更改为字符串,将其固定为1.7。
用下面的示例代码尝试解决您的问题:
log.trace("with name {0}, duration {1}, repetitions {2}", name, duration, repetitions);
链接地址: http://www.djcxy.com/p/30155.html