类型不匹配:推断的类型是字符串? 但字符串预计在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)总是用红色标出。

2 Solutions collect form web for “类型不匹配:推断的类型是字符串? 但字符串预计在kotlin”

根据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) 
  • 在使用Ktor的HTML构建器时,如何将部分代码提取到Kotlin的局部变量中?
  • Kotlin - 如何为RecyclerVIew实现ItemClickListener
  • 如何使用数据类的简单inheritance?
  • Kotlin检查了例外情况
  • 在Kotlin中包含可为空的列表的列表
  • Delegate.notNull和lateinit Kotlin之间的区别
  • 无法使用Room ORM Kotlin保存包含List <Model>的数据模型
  • 字符串资源提取kotlin在android studio?
  • 如何在Android中获取ObservableField的值
  • IntelliJ IDEA无法findorg.jetbrains.kotlin:kotlin-gradle-plugins
  • Anko floatingActionButton缺失或冲突的依赖关系
  • Kotlin language will be the best programming language for Android.