在Kotlin文档中,键入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)
^
非常感谢您提供所有答案。
答案 0 :(得分:3)
在您的示例中,"hello"
是String
literal。在Kotlin中,即使您省略变量的类型,也会推断出其类型。编译器从初始化程序表达式中推断var a
的类型,因此a
的类型为String
。您得到的警告意味着您检查的表达式a
始终是String
。
您的变量声明等效于var a: String = "hello"
,即变量只能引用String
,不允许分配任何其他类型。
例如,如果将变量声明更改为var a: Any = "hello"
,则不会发出警告,因为变量现在可以保存任何类型的实例,而不仅仅是String
。
答案 1 :(得分:0)
我只是通过向Swift学习来了解如何使用类型检查
open class fruit {}
class banana: fruit() {}
fun test( a: fruit ) {
if (a is banana) print("ok")
}
test(banana())