类型不匹配:推断的类型是字符串? 但字符串预计在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) 
  • 如何用RxAndroid压缩Kotlin语言中的几个观察值
  • javascript匿名对象在kotlin
  • 有没有一种方法可以在Kotlin中使用初始化函数构造一个HashSet?
  • 如何在Kotlin中实现纪念模式
  • JRebel可以通过maven的kotlin-maven-plugin插件重新加载Kotlin类吗?
  • 我有一个Vertx请求,我需要计算一个外部可见的(公共)URL
  • 在Kotlin使用齐射的内存不足
  • 为什么具有默认参数的Kotlin函数创建了一个没有使用参数的方法
  • 错误:未找到注释处理器'__gen.AnnotationProcessorWrapper_debug_android_databinding_annotationprocessor_ProcessDataBinding'
  • Anko相当于xml中的样式属性
  • 没有类型注释的Kotlin函数参数
  • Kotlin language will be the best programming language for Android.