java.util.IllegalFormatConversionException: %d can't format [Ljava.lang.Object; arguments
java.util.IllegalFormatConversionException: %d can't format [Ljava.lang.Object; arguments
最近再使用kotlin对 context.getString(@StringRes int resId, Object... formatArgs) 方法封装时,产生错误的示例如下:
fun Int.value(vararg formatArgs: Any) = context.getString(this, formatArgs)当我在使用时,调用R.string.abc.value(123)时,出现了java.util.IllegalFormatConversionException: %d can't format [Ljava.lang.Object; arguments错误,经过源码进行java代码转换时发现:
this.context.getString($this$value, new Object[]{formatArgs});formatArgs参数变成了new Object[]{formatArgs},这明显是不对的,最终改正为:
fun Int.value(vararg formatArgs: Any) = context.getString(this, *formatArgs)总结:
在使用kotlin调用java函数时,一定要注意:如果java方法中含有Object...args可变参数数组时,对应的kotlin代码是vararg *args。

浙公网安备 33010602011771号