Как использовать проверку типов в Kotlin? - PullRequest
0 голосов
/ 10 ноября 2018

В Kotlin doc введите check use is, но когда я пишу этот код

var a="hello"
if (a is String) print(a)

Есть предупреждение

warning: check for instance is always 'true'
if (a is String) print(a)
    ^

Большое спасибо за все ответы.

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Я только что понял, как использовать проверку типов, изучив у Swift

open class fruit {}
class banana: fruit() {}

fun test( a: fruit ) {
    if (a is banana) print("ok")
}

test(banana())
0 голосов
/ 10 ноября 2018

В вашем примере "hello" - это String литерал . В Kotlin, даже если вы опускаете тип для переменной, ее тип выводится. Компилятор выводит тип для var a из выражения инициализатора, поэтому тип a равен String. Получаемое предупреждение означает, что проверяемое вами выражение a всегда равно String.

Объявление вашей переменной эквивалентно var a: String = "hello", то есть переменная может ссылаться только на String, назначение любого другого типа недопустимо.

Например, если вы измените объявление переменной на var a: Any = "hello", предупреждения не будет, поскольку переменная теперь может содержать экземпляр любого типа, а не только String.

...