Class ConfigKey<T>

java.lang.Object
io.github.theword.queqiao.core.config.schema.ConfigNode
io.github.theword.queqiao.core.config.schema.ConfigKey<T>
Type Parameters:
T - 配置值类型

public final class ConfigKey<T> extends ConfigNode
配置项定义——配置系统的最小单元

一个 ConfigKey<T> 自带:path、codec、默认值、validator、注释。 它是配置的唯一来源:类型安全由泛型保证,取值必须写 config.get(ConfigKeys.WebSocket.PORT),而不是字符串查找。

不可变:注册后不得修改任何字段,否则树与运行时容易不一致。

equals/hashCode 使用对象 identity(不重写):不同 Runtime 可以有 path 相同的 两个不同 ConfigKey 对象,不应互相混用。同一 Registry 内的 path 唯一性由 ConfigRegistry 保证。

Since:
0.6.12
  • Method Details

    • builder

      public static <T> ConfigKey.Builder<T> builder(String path, ConfigCodec<T> codec)
      创建构建器
      Type Parameters:
      T - 值类型
      Parameters:
      path - 完整点分路径(必须与现有 YAML 路径保持兼容)
      codec - 编解码器
      Returns:
      构建器
    • defaultValue

      public T defaultValue()
      取默认值

      每次调用都返回副本(由 codec 的 copy 保证)—— 因此多个 Config 实例不会共享同一个可变默认对象。

      Returns:
      默认值副本
    • getCodec

      public ConfigCodec<T> getCodec()
    • hasValidator

      public boolean hasValidator()
    • parse

      public T parse(Object raw)
      解析原始值并校验
      Parameters:
      raw - YAML 原始值
      Returns:
      解析后的值
      Throws:
      ConfigValidationException - 类型不符或校验不通过
    • validate

      public void validate(T value)
      校验一个已解析的值
      Parameters:
      value - 值
      Throws:
      ConfigValidationException - 校验不通过