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),
即「当前值的类型能否赋给传入的类」——语义与参数名的直觉相反
(看起来像是在问「传入的类是不是当前类型的子类」)。
相关条目