我正在调用java.util.spi.ToolProvider接口,当我在Kotlin中run
时,我遇到了一个过载模糊错误。
有两种相同签名的运行方法,一种是默认方法,另一种是未实现。它们都在同一个类中,我该如何解决这个错误?
val jar = ToolProvider.findFirst("jar").orElseThrow()
jar.run(null, null, "--create", "file=foo.jar", "--main-class=foo.bar", "-C", "baz", ".")
答案 0 :(得分:1)
有两种相同签名的运行方法
没有,并且不可能:这不会编译。因为,没有任何方法可以解决歧义。
在这种情况下,这两种方法对前两个参数有不同的类型。所以你需要指定它们,例如如果你想要PrintStream
- 采取方法:
jar.run(null as PrintStream?, null as PrintStream?, "--create", "file=foo.jar", "--main-class=foo.bar", "-C", "baz", ".")
请注意文档说
抛出:NullPointerException - 如果任何参数为null ,或者args数组中有任何空值
因此,对于这些方法,您首先不会遇到有效的问题。