在Kotlin中使用不同的值类型实现Hashmap

时间:2016-05-26 09:05:12

标签: hashmap kotlin

是否可以在Kotlin中使用具有不同值类型的散列图?

我试过这个:

val template = "Hello {{world}} - {{count}} - {{tf}}"

val context = HashMap<String, Object>()
context.put("world", "John")
context.put("count", 1)
context.put("tf", true)

...但是这会给我一个类型不匹配(显然"John"1true不是对象)

在Java中,你可以通过创建类型new String("John")new Integer(1)Boolean.TRUE来解决这个问题,我已经在Kotlin中尝试过等效,但仍然会遇到类型不匹配错误。

context.put("tf", Boolean(true))

有什么想法吗?

2 个答案:

答案 0 :(得分:32)

在Kotlin中,Any是所有其他类型的超类型,您应该用它替换Java Object

val context = HashMap<String, Any>()
context.put("world", "John")
context.put("count", 1)
context.put("tf", true)

答案 1 :(得分:-1)

对于新访客,也可以使用此方法

val a= hashMapOf<Any,Any>( 1 to Exception(), 2 to Throwable(), Object() to 33)

其中键和值都可以是任何类型。