Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot LinkedHashMap的Kotlin演员阵容<;字符串,字符串>;串?_Spring Boot_Kotlin - Fatal编程技术网

Spring boot LinkedHashMap的Kotlin演员阵容<;字符串,字符串>;串?

Spring boot LinkedHashMap的Kotlin演员阵容<;字符串,字符串>;串?,spring-boot,kotlin,Spring Boot,Kotlin,我正在解析一个非常简单的YAML文件 这是我的密码: val yaml = Yaml() val inputStream: InputStream = FileInputStream("permissions.yml") val obj = yaml.load<LinkedHashMap<String, String>>(inputStream) println(obj.get("accepted_groups")) // prints [A, B] val group

我正在解析一个非常简单的YAML文件

这是我的密码:

val yaml = Yaml()
val inputStream: InputStream = FileInputStream("permissions.yml")
val obj = yaml.load<LinkedHashMap<String, String>>(inputStream)
println(obj.get("accepted_groups")) // prints [A, B]
val group = obj.get("accepted_groups") // crashes
val yaml=yaml()
val inputStream:inputStream=FileInputStream(“permissions.yml”)
val obj=yaml.load(输入流)
println(obj.get(“接受的组”)//prints[A,B]
val group=obj.get(“已接受的组”)//崩溃
错误为java.lang.ClassCastException:无法将类java.util.ArrayList转换为类java.lang.String
那么println是如何打印对象的呢?如何从此LinkedHashMap检索数组?

问题在于YAML文件中的值不是(全部)字符串。也就是说,它看起来像

accepted_groups:
    - A
    - B
不是

因此,
LinkedHashMap
只是使用了错误的类型。 什么是正确的类型,不知道就不能说:

  • 文件的实际结构

  • 哪个库
    Yaml
    类来自(它不是Kotlin标准库,也不是您在标签中提到的Spring Boot)

  • LinkedHashMap
    可能会起作用,但不是最佳选择

    那么println是如何打印对象的呢

    通过调用
    toString
    ,就像调用任何对象一样

    问题在于

    val group = obj.get("accepted_groups")
    

    通过使用
    LinkedHashMap
    group
    推断的类型是
    String
    ,但存储在那里的实际值不是

    如何从此LinkedHashMap检索数组?与接受的组关联的实际值是ArrayList。但是您被告知Kotlin编译器yaml.load()将返回一个LinkedHashMap,其中包含字符串作为值。因此,编译器会将强制转换插入字符串,因此出现异常。您需要提供正确的泛型类型。yamlLoad()返回LinkedHashMap。val inputStream:inputStream=FileInputStream(“permissions.yml”)val obj=yaml.load(inputStream)给出了错误类java.util.LinkedHashMap不能转换为类java.util.Arraylistals,尽管@AlexeyRomanov说代码中没有转换。那么它是如何成为ClassCastException的呢?它返回一个映射。但是映射中的值不是您所声称的字符串。其中至少有一个是列表。
    val group = obj.get("accepted_groups")