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), 即「当前值的类型能否赋给传入的类」——语义与参数名的直觉相反 (看起来像是在问「传入的类是不是当前类型的子类」)。
相关条目
- ConfigTemplate - 绑定 / 回填本类
- Config - 3 个实例的声明处
- MyEssentialsCore - 初始化调用方