Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 在Kotlin中显式指定类型与不显式指定类型有什么区别?_Variables_Kotlin - Fatal编程技术网

Variables 在Kotlin中显式指定类型与不显式指定类型有什么区别?

Variables 在Kotlin中显式指定类型与不显式指定类型有什么区别?,variables,kotlin,Variables,Kotlin,例如,这两者之间的区别是什么: var serviceItem: String = “Haircut” 及 没什么。Kotlin为您管理类型声明,因此您无需指定类型。它在文档中提到的类层次结构中很有用: 显式指定类型 如果确实需要,您可以在同一台计算机上初始化和指定类型 线如果您正在处理更详细的类层次结构,这将非常有用 之后,您希望变量类型成为值的基类型 类别: 没什么。Kotlin为您管理类型声明,因此您无需指定类型。它在文档中提到的类层次结构中很有用: 显式指定类型 如果确实需要,您可以在

例如,这两者之间的区别是什么:

var serviceItem: String = “Haircut”


没什么。Kotlin为您管理类型声明,因此您无需指定类型。它在文档中提到的类层次结构中很有用:

显式指定类型

如果确实需要,您可以在同一台计算机上初始化和指定类型 线如果您正在处理更详细的类层次结构,这将非常有用 之后,您希望变量类型成为值的基类型 类别:


没什么。Kotlin为您管理类型声明,因此您无需指定类型。它在文档中提到的类层次结构中很有用:

显式指定类型

如果确实需要,您可以在同一台计算机上初始化和指定类型 线如果您正在处理更详细的类层次结构,这将非常有用 之后,您希望变量类型成为值的基类型 类别:


你所举的例子是相同的

但是,在许多情况下,您可能希望显式地指定它

最简单的方法是,如果希望成员类型为超类:

val list:list=ArrayList 另一种可能是,如果您有一些复杂的表达式,其中的类型不明显,并且您希望它对没有在IDE中查看它的人来说是明显的,并且打开了类型提示,例如代码复查。在这种情况下,它还可以防止错误:您可能希望确保不会意外地将其重构为列表之外的内容:

val list:list=foo.bar.getBaz.frobniteWithbar.foo 有时,您试图为初始化表达式的表达式提供类型推断提示。在本例中,您必须使用mutableListOf:

val list:MutableList=mutableListOf 如所示,如果初始化表达式为:

val foo=LinkedList.apply{add1} val bar:Int=foo.first//bar的类型为Int!
你所举的例子是相同的

但是,在许多情况下,您可能希望显式地指定它

最简单的方法是,如果希望成员类型为超类:

val list:list=ArrayList 另一种可能是,如果您有一些复杂的表达式,其中的类型不明显,并且您希望它对没有在IDE中查看它的人来说是明显的,并且打开了类型提示,例如代码复查。在这种情况下,它还可以防止错误:您可能希望确保不会意外地将其重构为列表之外的内容:

val list:list=foo.bar.getBaz.frobniteWithbar.foo 有时,您试图为初始化表达式的表达式提供类型推断提示。在本例中,您必须使用mutableListOf:

val list:MutableList=mutableListOf 如所示,如果初始化表达式为:

val foo=LinkedList.apply{add1} val bar:Int=foo.first//bar的类型为Int!
没有区别。当编译器无法推断类型时,您可以放置类型注释;或者代码很复杂,因此您希望为可读性对类型进行注释。这没有区别。当编译器无法推断类型时,您可以放置类型注释;或者代码很复杂,因此您需要对类型进行注释以确保可读性。另一个原因是,如果初始化器返回一个平台类型,您需要告诉编译器是否将其视为可为null。@gidds很好,谢谢!当然,我在回答中添加了一个例子和一个链接,链接到您的评论,以获得好评。另一个原因是,如果初始化器返回一个平台类型,并且您想告诉编译器是否将其视为可空值。@gidds很好,谢谢!当然,我在我的回答中添加了一个例子和一个链接,链接到您的评论,以获得好评。
var serviceItem = “Haircut”
val characters: CharSequence = "abc"