Android Studio Kotlin несоответствие типов для платформ - PullRequest
0 голосов
/ 18 декабря 2018

Во всех моих проектах kotlin я обнаружил новые предупреждения, касающиеся использования типов платформ.Например,

val s: String = sharedPrefs.getString("key", "defaultValue")

выдает предупреждение

Type mismatch: inferred type is String? but String was expected

Он компилируется нормально, хотя, по-видимому, он не связан с котлинами, обеспечивающими тип NULL.Но это предупреждение, похоже, появилось в последние недели, что может быть связано с изменением в Android Studio или плагине kotlin.

В этом конкретном случае, почему выводимый тип не совпадает с тем, что я указал в2-й аргумент (String, а не String?)

1 Ответ

0 голосов
/ 18 декабря 2018

Глядя на код SharedPreferences, он определяется как

@Nullable
String getString(String key, @Nullable String defValue);

Если посмотреть на него в Android Studio , код подразумевает

@Contract(value="_,!null->!null")

Но это не определено в самом источнике и не рассматривается Android Studio .Если вы внимательно посмотрите на само предупреждение, вы обнаружите, что это Kotlin NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS JVM диагностика ошибок.

В любом случае @Nullable аннотация - это просто предложение, и явное объявление имеет приоритет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...