AttributeMap
一个通过 Attribute 作为键值来界定其元素类型的映射表。
AttributeMap 内部类似于以名称字符串为键的映射表, 但是 AttributeMap 不需要通过泛型指定具体的值元素类型, 而是通过作为键的 Attribute 来决定元素类型。
AttributeMap 不允许存入null值(Attribute 的泛型约束)。
Attribute 本身不记录类型信息,因此 AttributeMap 也无法校验类型信息。 请避免置入两个名称相同但是元素值不同的键值对,这会导致置入或获取时会出现 ClassCastException 异常。
example:
class Foo
fun test() {
val fooAttr = attribute<Foo>("foo")
val map = attributeMutableMapOf()
val foo = Foo()
map[fooAttr] = foo
val foo1 = map[fooAttr]!!
val foo2 = map[attribute<Foo>("foo")]!! // by a new instance
println(foo1 === foo2) // true
}
Content copied to clipboard