>我遇到了一个奇怪的问题:我有一个用于检索资源字符串的通用函数(它只是为了避免每次都编写context.resources.getString()):
protected fun string(@StringRes stringRes: Int, vararg args: String): String = app.getString(stringRes, args)
直到现在,当我添加 varargs 以检索格式化字符串时,工作正常。简单的字符串仍然可以正常工作,但是当我尝试检索格式化的字符串时:
string(R.string.formatted_string, myId)
我的字符串资源:
<string name="formatted_string">#%s</string>
我得到一些垃圾:
#[Ljava.lang.String;@3a59711
预期:
#4848684
使用我请求的资源进行垃圾更改
它看起来像一个对象标识符。
如果我不使用该方法,它可以正常工作
这是怎么回事?
您的解决方案是使用点差运算符*
:
fun string(@StringRes stringRes: Int, vararg args: String): String = getString(stringRes, *args)
参数数量可变(变量)