[英]What is the meaning of “ClassInstance.[Someclass::class.java]” in Kotlin?
使用 kotlin,您可以将运算符修饰符添加到 function。 因此,如果您有一些 class 和get
function 并且您可能希望使用[]
访问它,例如数组或 map,您可以添加operator
修饰符。
方括号被转换为使用适当数量的 arguments 获取和设置的调用。
所以这只适用于名称为get
或set
的函数!
class Provider {
operator fun get(key: String)
operator fun set(key: String, value: String) { ... }
}
然后你可以像这样调用 function :
Provider().get("key") // IDE hint: should be replaced with indexing operator
Provider()["key"] // calls get()
Provider().set("key", "value") // IDE hint: should be replaced with indexing operator
Provider()["key"] = "value" // calls set()
参考
Kotlin 通过将 function 标记为operator
function 来允许运算符重载。 方括号表示法是这些运算符之一( 索引访问运算符)。
如果 Kotlin 函数的名称和签名符合 Kotlin 运算符 ZC1C4145268E1ZA73 在这种情况下,如果名为get
的函数返回某些内容,它将解释为“索引访问运算符”,这允许您使用方括号表示法。
ViewModelProvider[Someclass::class.java]
是ViewModelProvider.get(Someclass::class.java)
的较短版本,没有区别。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.