kotlin - Map.Entry 在 Map 中使用 Kotlin 类型别名

标签 kotlin type-alias

在 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 )并提取其两个组件( StringString ),然后将这两个组件用作两个不同的 type parameters对于Map .对不起,你问得太多了。
MyEntry是单type它只能这样使用。以下是一个例子

typealias MyMap = Map<MyEntry, String>

关于kotlin - Map.Entry 在 Map 中使用 Kotlin 类型别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60755499/

相关文章:

kotlin - 为什么编译器认为这个 if 语句是一个表达式?

android - 从 Flutter 中的函数名获取函数

android - 在 Kotlin 多平台项目中使用 Ktor HttpClient 将文件作为二进制文件

ios - 如何将符合具有关联类型的协议(protocol)的不同类型添加到集合中?

Swift:类型别名和协议(protocol)中具有值的关联类型有什么区别?

ios - 使用 Swift 泛型编写带有完成 block 的 API 请求

android - 将特定表解析为字符串数组 Jsoup

typescript - 别名与 Webpack 4 和 awesome-typescript 加载器不工作

Typescript 类型别名让 Intellisense 显示别名,而不是源类型

android - 在 Kotlin 中测试私有(private)方法