AttributeMap

interface AttributeMap(source)

一个通过 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
}

See also

Inheritors

Types

Link copied to clipboard
object Companion

Properties

Link copied to clipboard
abstract val entries: Set<Map.Entry<Attribute<*>, Any>>

得到所有的键值对

Functions

Link copied to clipboard
abstract operator fun contains(attribute: Attribute<*>): Boolean

判断是否存在对应键名与类型的键。

Link copied to clipboard
abstract operator fun <T : Any> get(attribute: Attribute<T>): T?

通过 attribute 得到对应的数据。

Link copied to clipboard
abstract fun safeGet(attribute: Attribute<*>): Any?

通过 attribute 得到对应的数据,但是不进行类型转化。

Link copied to clipboard
abstract fun size(): Int

数量