无法访问“ <init>”:它是“构造函数”中的公共/ * package * /

时间:2019-12-27 09:18:10

标签: kotlin reflection yaml

我正尝试在this tutorial之后使用SnakeYAML在Kotlin中解析一个Yaml:

data class Case(val args: List<String>, val expected: String, val score: Int)
data class TestCases(val target: String, val cases: List<Case>)

val yaml = Yaml(Constructor(TestCases::class.java))

但是代码在IntelliJ中返回了这些错误

  

无法访问“ ”:它是“构造函数”中的public / * package * /

用于在Constructor中使用java.lang.reflect.Constructor,并且

  

使用提供的参数不能调用以下函数:

     
      在org.yaml.snakeyaml.Yaml中定义的
  • 公共构造函数Yaml(dumperOptions:DumperOptions!)
  •   在org.yaml.snakeyaml.Yaml中定义的
  • 公共构造函数Yaml(loadingConfig:LoaderOptions!)
  •   在org.yaml.snakeyaml.Yaml中定义的
  • 公共构造函数Yaml(构造函数:BaseConstructor!)
  •   在org.yaml.snakeyaml.Yaml中定义的
  • 公共构造函数Yaml(代表:代表!)
  •   

用于在Yaml中使用org.yaml.snakeyaml.Yaml,我认为期望BaseConstructor中有Constructor

如何解决此问题?谢谢。

1 个答案:

答案 0 :(得分:1)

我猜您正在导入错误的类。应该是org.yaml.snakeyaml.constructor.Constructor而不是java.lang.reflect.Constructor