例如,这有什么区别:
var serviceItem: String = "Haircut"
还有
var serviceItem = "Haircut"
您给出的示例是等效的。
但是,在许多情况下您可能需要明确指定它。
最简单的是如果您希望成员类型是超类:
val list: List<Foo> = ArrayList<Foo>()
另一种情况是,如果您有一些复杂的表达式,其中类型不明显,并且您希望它对于不在打开类型提示(例如代码审查)的 IDE 中查看它的人来说是显而易见的。在这种情况下,它也可以防错:您可能想确保不会意外地将其重构为 not
List<Foo>
:
val list: List<Foo> = foo.bar.getBaz().frobnicateWith(bar.foo)
有时,您尝试为初始化表达式的类型推断提供提示(在这种情况下,您必须使用
mutableListOf<Foo>()
:
val list: MutableList<Foo> = mutableListOf()
正如 gidds 在评论中指出的那样,如果初始化表达式是平台类型,你也可以这样做:
val foo = LinkedList<Int>().apply { add(1) }
val bar: Int = foo.first // bar would otherwise be of type Int!
什么也没有。 Kotlin 为您管理类型声明,因此您无需指定类型。正如文档中提到的,它在类层次结构中很有用:
https://kotlinlang.org/docs/tutorials/kotlin-for-py/declaring-variables.html
明确指定类型
如果您确实愿意,您可以在同一个上初始化并指定类型 线。如果您正在处理类层次结构,这非常有用(更多信息 稍后)并且您希望变量类型成为值的基类型 班级:
val characters: CharSequence = "abc"