ConfigProperty

基本信息

属性 值
类名 myessentials.config.api.ConfigProperty
类型 class<T>,3 个 public final 字段 + 4 个方法
启用版本 Minecraft 1.7.10

功能

单个配置项的值容器,并提供到 Forge Property.Type 的类型映射。

字段 类型 说明
name String 配置键名
category String 所属分类
comment String 注释(写入 cfg)
value T 当前值(private)

方法

方法 说明
构造器 (String, String, String, T) 键名 / 分类 / 注释 / 默认值
set(T) 写值
get() 读值
isClassType(Class) 判断当前值类型是否兼容
getType() 返回对应的 Property.Type

实现要点

  • 构造器把传入的 defaultValue 直接赋给 value—— 即未读到配置文件前,取值就等于默认值。
  • getType() 查表 CONFIG_TYPES,该表是 ImmutableMap<Class<?>, Property.Type>,覆盖 Integer / int 及其数组、Double / double 及其数组、 Float / float 及其数组(全部映射为 Property.Type.DOUBLE)、 Boolean / boolean 及其数组、String / String[]。
  • 表中没有 Long、Short、Character、Enum 类型; 遇到未登记的类型时 getType() 返回 null。
  • Float 映射到 DOUBLE 是有意为之(Forge 的配置只有 double 型浮点项)。
  • isClassType 的实现是 value.getClass().isAssignableFrom(clazz), 即「当前值的类型能否赋给传入的类」——语义与参数名的直觉相反 (看起来像是在问「传入的类是不是当前类型的子类」)。

相关条目