代码之家  ›  专栏  ›  技术社区  ›  jack_the_beast

android和kotlin varargs:格式化字符串返回垃圾

  •  2
  • jack_the_beast  · 技术社区  · 7 年前

    我遇到了一个奇怪的问题:我有一个用于检索资源字符串的常规函数(只是为了避免每次写入context.resource s.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
    

    垃圾随我请求的资源变化

    它看起来是一个对象标识符。

    如果我不使用这种方法,它会很好地工作

    这里发生了什么?

    1 回复  |  直到 7 年前
        1
  •  4
  •   Sergio    7 年前

    您的解决方案是使用 推广算子 * :

    fun string(@StringRes stringRes: Int, vararg args: String): String = getString(stringRes, *args)
    

    Variable number of arguments (Varargs)

    推荐文章