feat(holder): 多实例Holder支持
支持存储多个json 和 yml 数据,类似于存储玩家数据,使用uuid进行命名文件名字
/data/xxx.json
不知道能否用不同的ConfigurationHolder去initialize同一个已经写好的Configuration类?
不知道能否用不同的ConfigurationHolder去initialize同一个已经写好的Configuration类?
看了一下源码 这样应该不行 因为配置项字段在初始化时就写入了唯一的Holder 具体代码在: https://github.com/CarmJos/configured/blob/47fd058f449db498b6e6b3f7097bc6477bd74643/core/src/main/java/cc/carm/lib/configuration/value/ValueManifest.java#L68-L73
不知道能否用不同的ConfigurationHolder去initialize同一个已经写好的Configuration类?
现在其实支持,只不过比较麻烦。只需要编写一个实体类即可,例如
public class SomeConfig extends Configuration {
// 注意,这里不能设为静态,而要作为内部对象。
public ConfiguredValue<String> VALS = ...;
}
随后,对于不同的文件,创建多个holder,并令每个holder初始化单个实例。
void init(){
for (File file: files){
ConfigurationHolder<?> holder = ...;
SomeConfig config = new SomeConfig();
holder.initialize(config);
// 记得吧config存起来,用于读取
}
}
由于使用过于繁琐,我正在考虑编写一个更快捷、更方便的组合holder,以实现类似情景下的快速开发。
不知道能否用不同的ConfigurationHolder去initialize同一个已经写好的Configuration类?
现在其实支持,只不过比较麻烦。只需要编写一个实体类即可,例如
public class SomeConfig extends Configuration {
// 注意,这里不能设为静态,而要作为内部对象。 public ConfiguredValue<String> VALS = ...;} 随后,对于不同的文件,创建多个holder,并令每个holder初始化单个实例。
void init(){
for (File file: files){
ConfigurationHolder<?> holder = ...; SomeConfig config = new SomeConfig(); holder.initialize(config); // 记得吧config存起来,用于读取}
} 由于使用过于繁琐,我正在考虑编写一个更快捷、更方便的组合holder,以实现类似情景下的快速开发。
但是如果通过实例初始化就不能加载内部类了
不知道能否用不同的ConfigurationHolder去initialize同一个已经写好的Configuration类?
现在其实支持,只不过比较麻烦。只需要编写一个实体类即可,例如 public class SomeConfig extends Configuration {
// 注意,这里不能设为静态,而要作为内部对象。 public ConfiguredValue<String> VALS = ...;} 随后,对于不同的文件,创建多个holder,并令每个holder初始化单个实例。 void init(){ for (File file: files){
ConfigurationHolder<?> holder = ...; SomeConfig config = new SomeConfig(); holder.initialize(config); // 记得吧config存起来,用于读取} } 由于使用过于繁琐,我正在考虑编写一个更快捷、更方便的组合holder,以实现类似情景下的快速开发。
但是如果通过实例初始化就不能加载内部类了
public class SomeConfig extends Configuration {
// 注意,这里不能设为静态,而要作为内部对象。
public ConfiguredValue<String> VALS = ...;
// 同时,若需要内部类,只需要继续添加实例即可
public OtherConfig OTHERS = new OtherConfig();
}