在 Kotlin 中,可以定义 typealias
对于类,因此也适用于 Map<K,V>
.假设我有以下内容:
typealias MyMap = Map<String, String>
但是,如果我也想命名 map 条目怎么办,如下所示:
typealias MyEntry = Map.Entry<String, String>
typealias MyMap = Map<MyEntry> // error
然而,Kotlin 不接受这一点,因为
Map<K,V>
需要键和值的类型。如上所示的这样的事情可能吗?
最佳答案
不,这与 typealias
无关,而是如何声明generic
类型。Map
接口(interface)需要两种类型parameters
并且您必须同时提供两者,否则您会收到错误,如果您想使用 Map
这是parameterized
超过其entry
而不是 Key
, Value
然后你可以定义你自己的Map
类型。
在上述情况下,当您执行 Map<MyEntry>
, 您希望语言采用您提供的单一类型参数( MyEntry
)并提取其两个组件( String
和 String
),然后将这两个组件用作两个不同的 type
parameters
对于Map
.对不起,你问得太多了。MyEntry
是单type
它只能这样使用。以下是一个例子
typealias MyMap = Map<MyEntry, String>
关于kotlin - Map.Entry 在 Map 中使用 Kotlin 类型别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60755499/