AbstractPluginData

abstract class AbstractPluginData : PluginDataImpl, PluginData

PluginData 的默认实现. 支持使用 by value() 等委托方法创建 Value 并跟踪其改动.

实现注意

此类型处于实验性阶段. 使用其中定义的属性和函数是安全的, 但将来可能会新增成员抽象函数.

See also

Constructors

Link copied to clipboard
fun AbstractPluginData()

Types

Link copied to clipboard
data class ValueNode<T>(    val valueName: String,     val value: Value<out T>,     val annotations: List<Annotation>,     val updaterSerializer: KSerializer<Unit>)

track 创建, 来自一个通过 by value 初始化的属性节点.

Functions

Link copied to clipboard
open override fun onInit(owner: PluginDataHolder, storage: PluginDataStorage)

当这个 PluginData 被放入一个 PluginDataStorage 时调用

Link copied to clipboard
open override fun onValueChanged(value: Value<*>)

当所属于这个 PluginDataValue 被修改时被调用.

Link copied to clipboard
operator fun <T : SerializerAwareValue<*>> T.provideDelegate(thisRef: Any?, property: KProperty<*>): T

使用 by value() 时自动调用此方法, 添加对 Value 的值修改的跟踪, 并创建 ValueNode 加入 valueNodes

Link copied to clipboard
open fun <T : SerializerAwareValue<*>> track(    value: T,     valueName: String,     annotations: List<Annotation>): T

供手动实现时值跟踪使用 (如 Java 用户). 一般 Kotlin 用户需使用 provideDelegate

Properties

Link copied to clipboard
abstract override val saveName: String

这个 PluginData 保存时使用的名称.

Link copied to clipboard
open override val serializersModule: SerializersModule

序列化本对象数据时使用的 SerializersModule. 用于支持多态序列化等. 在序列化时会先使用 PluginData.serializersModule, 再对无法找到 serializer 的类型使用 MessageSerializers.serializersModule.

Link copied to clipboard
override val updaterSerializer: KSerializer<Unit>

所有 valueNodes 更新和保存序列化器.

Link copied to clipboard

添加了追踪的 ValueNode 列表, 即通过 by value 初始化的属性列表.

Inheritors

Link copied to clipboard
Link copied to clipboard

Extensions

Link copied to clipboard
fun <T> AbstractPluginData.findBackingFieldValue(property: KProperty<T>): Value<out T>?
fun <T> AbstractPluginData.findBackingFieldValue(propertyValueName: String): Value<out T>?

获取这个 KProperty 委托的 Value

Link copied to clipboard

获取这个 KProperty 委托的 Value