variables - 在Kotlin中明确指定类型与未明确指定类型之间有什么区别?

标签 variables kotlin

例如,这之间有什么区别:

var serviceItem: String = “Haircut”
var serviceItem = “Haircut”

最佳答案

您提供的示例是等效的。
但是,在许多情况下,您可能希望显式指定它。
最直接的是如果您希望成员类型是父类(super class):

val list: List<Foo> = ArrayList<Foo>()
另一个可能是,如果您有一个复杂的表达式,其中的类型不明显,并且您希望它对于那些在打开了类型提示的情况下(例如代码检查)在IDE中没有看到它的人来说是显而易见的。在这种情况下,它也可以是防错的:您可能要确保不要意外地将其重构为不是List<Foo>的内容:
val list: List<Foo> = foo.bar.getBaz().frobnicateWith(bar.foo)
有时,您尝试向类型推断提供提示以初始化表达式(在这种情况下,否则,您必须使用mutableListOf<Foo>():
val list: MutableList<Foo> = mutableListOf()
作为gidds pointed out in a comment,如果初始化表达式是platform type,也可以这样做:
val foo = LinkedList<Int>().apply { add(1) }
val bar: Int = foo.first // bar would otherwise be of type Int!

关于variables - 在Kotlin中明确指定类型与未明确指定类型之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62549363/

相关文章:

php - 使用 php 变量和 SQL 语句的日期范围过滤器

java - 查明 for 循环中的数据是否满足特定条件

gradle - 将 kapt 与多平台子项目一起使用

javascript - 从数组中随机选择然后将选择分配给变量

php - 在特定日期之间打开和关闭页面

java - 注入(inject)构造函数和伴生对象

android - Kotlin 静态扩展函数 Android

java - Kotlin/java - 如何将日期时间字符串转换为 Instant?

functional-programming - Kotlin 中的内存功能

php - 将变量设置为 sql 查询的字段名称