Android Kotlin .toString()和.string()之间的区别

Ton*_*man 4 kotlin okhttp okhttp3

我有一段代码:

    override fun onResponse(call: Call<ResponseBody>, response: Response<ResponseBody>) {
        try {
            Log.d("DEBUG POST=====>", response.body()!!.string())
        }catch(e:IOException) {
            e.printStackTrace()

        }

    }
Run Code Online (Sandbox Code Playgroud)

当我使用时,response.body()!!.string()我得到了正确的输出和JSON体.

当我使用:response.body().toString()我得到okhttp3.ResponseBody$1@c626d25

任何人都可以告诉我这两种方法有什么区别.

Zoe*_*Zoe 10

string()不是有效的Kotlin(或Java)方法,因为两种语言都没有定义它.它由OkHttp定义ResponseBody,它是获取类的实际字符串值的正确方法.它没有覆盖toString,这意味着调用toString()go以Object你得到的形式返回对象.确切地说,它返回对象的十六进制表示.

TL:DR; Java或Kotlin没有定义一个string()方法,OkHttp库在ResponseBody类中.toString未被覆盖,使其返回类的十六进制表示而不是正文的字符串值.使用string()与否toString()