AbstractPolymorphicMessageKey

abstract class AbstractPolymorphicMessageKey<out B : SingleMessage, out M : B>(baseKey: MessageKey<B>, safeCast: (SingleMessage) -> M?) : AbstractMessageKey<M> , MessageKey<M>

多态 MessageKey.

示例: HummerMessage

                 MessageContent

HummerMessage

+------------+-------------+------------+
| | | |
PokeMessage VipFace FlashImage ...

连接 一个 VipFace 到一个 MessageChain 时, 由于 VipFace 最上层为 MessageContent, 消息链中第一个 MessageContent 会被 (保留顺序地) 替换为 VipFace, 其他所有 MessageContent 都会被删除.

如:

val source: MessageSource = ...

val result = messageChainOf(PlainText("a"), PlainText("b"), source, AtAll) + VipFace.LiuLian
// result 为 [VipFace.LiuLian, source]

val result = source1 + source2
// result 为 [source2], 总是右侧替换左侧

Inheritors

Constructors

Link copied to clipboard
constructor(baseKey: MessageKey<B>, safeCast: (SingleMessage) -> M?)

Functions

Link copied to clipboard

尝试 MessageKey.safeCast, 成功时返回 true

Properties

Link copied to clipboard
abstract val safeCast: (SingleMessage) -> M?

将一个 SingleMessage 强转为 M 类型. 在类型不符合时返回 null

Link copied to clipboard