类型不匹配:推断的类型是字符串? 但字符串预计在kotlin

我的主要活动中有以下代码:

var qNa_list = parseQuestions(loadJSONFromAsset("qna_list.json")) fun loadJSONFromAsset(file_name:String): String? { var json: String? = null try { val isis = assets.open(file_name) val size = isis.available() val buffer = ByteArray(size) isis.read(buffer) isis.close() json = String(buffer, "UTF-8") } catch (ex: IOException) { ex.printStackTrace() return null } return json } 

当我尝试编译它时,我得到以下错误。

我修复了一些由于可能的错误而导致的其他错误,但是这个错误是我无法解码的。

错误:(127,35)类型不匹配:推断的类型是字符串,但字符集是预期的

我已经改变了某些值为空来适应错误,但是json = String(buffer, "UTF-8") (UTF-8)总是用红色标出。

根据javadoc, String构造函数接受Charset类型的第二个参数, 如下所示 。 你可以使用Charset.forName(String)静态方法来创建你的Charset

这似乎解决了这个问题。

看来我需要指定Charset类型的对象,而不是像UTF-8字符串。

第一种方法如@MarošŠeleng所述

 Charset.forName("UTF-8") 

或者,指定Charset.UTF_8

 val charset: Charset = Charsets.UTF_8 json = String(buffer, charset)