例如,这之间有什么区别:
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/