У меня есть класс Java, который находится вне моего контроля и определяется как:
public @interface ValueSource {
String[] strings() default {}
}
Я пытаюсь использовать этот класс из файла Kotlin, которым я управляю, вот так:
class Thing {
@ValueSource(string = ["non-null", null])
fun performAction(value: String?) {
// Do stuff
}
}
Я получаю ошибку компилятора
Kotlin: Type inference failed. Expected type mismatch: inferred type is Array<String?> but Array<String> was expected.
Я понимаю, почему выводимый тип Array<String?>
, но почему ожидаемый тип не совпадает? Почему Kotlin интерпретирует универсальный Java как String!
, а не String?
? И, наконец, есть ли способ подавить ошибку?
Котлин 1.2.61