【发布时间】:2013-10-13 09:49:39
【问题描述】:
我的 bukkit 插件有很大的配置文件,但我不知道如何为其创建配置类。 如果我用这么多变量创建一个类,那么很难使用和阅读/编辑。
所以我有使用内部 clesses 的新想法,但是性能等呢?
那个示例配置文件:(在 YAML 中,真正的配置文件要大得多) http://pastebin.com/09WMq5qG
以及我对该示例的代码:
public class Cfg {
protected General general;
protected General2 general2;
public Cfg(ConfigurationSection cfg) {
general = new General(cfg.getConfigurationSection("General"));
general2 = new General2(cfg.getConfigurationSection("General2"));
}
public class General {
protected Gen2 gen2;
protected Gen5 gen5;
protected int op1;
protected String op2;
public General(ConfigurationSection general) {
this.op1 = general.getInt("op1");
this.op2 = general.getString("op2");
gen2 = new Gen2(general.getConfigurationSection("Gen2"));
gen5 = new Gen5(general.getConfigurationSection("Gen5"));
}
public class Gen2 {
protected Gen3 gen3;
protected Gen4 gen4;
protected int lol;
protected String edrd;
public Gen2(ConfigurationSection gen2) {
this.lol = gen2.getInt("lol");
this.edrd = gen2.getString("edrd");
gen3 = new Gen3(gen2.getConfigurationSection("Gen3"));
gen4 = new Gen4(gen2.getConfigurationSection("Gen4"));
}
public class Gen3 {
protected int dsdgdf;
protected String djkw4g;
public Gen3(ConfigurationSection gen3) {
this.dsdgdf = gen3.getInt("dsdgdf");
this.djkw4g = gen3.getString("djkw4g");
}
}
public class Gen4 {
protected int dsdgdf;
protected String djkw4g;
public Gen4(ConfigurationSection gen4) {
this.dsdgdf = gen4.getInt("dsdgdf");
this.djkw4g = gen4.getString("djkw4g");
}
}
}
public class Gen5 {
protected Gen6 gen6;
protected Gen7 gen7;
protected int lol;
protected String edrd;
public Gen5(ConfigurationSection gen5) {
this.lol = gen5.getInt("lol");
this.edrd = gen5.getString("edrd");
gen6 = new Gen6(gen5.getConfigurationSection("Gen6"));
gen7 = new Gen7(gen5.getConfigurationSection("Gen7"));
}
public class Gen6 {
protected int dsdgdf;
protected String djkw4g;
public Gen6(ConfigurationSection gen6) {
this.dsdgdf = gen6.getInt("dsdgdf");
this.djkw4g = gen6.getString("djkw4g");
}
}
public class Gen7 {
protected int dsdgdf;
protected String djkw4g;
public Gen7(ConfigurationSection gen7) {
this.dsdgdf = gen7.getInt("dsdgdf");
this.djkw4g = gen7.getString("djkw4g");
}
}
}
}
public class General2 {
protected Gen2 gen2;
protected Gen5 gen5;
protected int op1;
protected String op2;
public General2(ConfigurationSection general2) {
this.op1 = general2.getInt("op1");
this.op2 = general2.getString("op2");
gen2 = new Gen2(general2.getConfigurationSection("Gen2"));
gen5 = new Gen5(general2.getConfigurationSection("Gen5"));
}
public class Gen2 {
protected Gen3 gen3;
protected Gen4 gen4;
protected int lol;
protected String edrd;
public Gen2(ConfigurationSection gen2) {
this.lol = gen2.getInt("lol");
this.edrd = gen2.getString("edrd");
gen3 = new Gen3(gen2.getConfigurationSection("Gen3"));
gen4 = new Gen4(gen2.getConfigurationSection("Gen4"));
}
public class Gen3 {
protected int dsdgdf;
protected String djkw4g;
public Gen3(ConfigurationSection gen3) {
this.dsdgdf = gen3.getInt("dsdgdf");
this.djkw4g = gen3.getString("djkw4g");
}
}
public class Gen4 {
protected int dsdgdf;
protected String djkw4g;
public Gen4(ConfigurationSection gen4) {
this.dsdgdf = gen4.getInt("dsdgdf");
this.djkw4g = gen4.getString("djkw4g");
}
}
}
public class Gen5 {
protected Gen6 gen6;
protected Gen7 gen7;
protected int lol;
protected String edrd;
public Gen5(ConfigurationSection gen5) {
this.lol = gen5.getInt("lol");
this.edrd = gen5.getString("edrd");
gen6 = new Gen6(gen5.getConfigurationSection("Gen6"));
gen7 = new Gen7(gen5.getConfigurationSection("Gen7"));
}
public class Gen6 {
protected int dsdgdf;
protected String djkw4g;
public Gen6(ConfigurationSection gen6) {
this.dsdgdf = gen6.getInt("dsdgdf");
this.djkw4g = gen6.getString("djkw4g");
}
}
public class Gen7 {
protected int dsdgdf;
protected String djkw4g;
public Gen7(ConfigurationSection gen7) {
this.dsdgdf = gen7.getInt("dsdgdf");
this.djkw4g = gen7.getString("djkw4g");
}
}
}
}
}
对我来说,使用它比将所有变量存储在一个类中更容易,但性能如何?这将是一个好方法还是只是减慢代码?
//对不起我的英语。
【问题讨论】:
-
为什么您认为这样的配置会成为性能问题?您指的是哪种性能 - 在启动期间加载配置或在“运行时”使用配置?
-
@home 我还是 Java 新手,只是不知道性能会怎样。我在启动时加载此配置(不一定很快)并使用该类来使用配置中的变量(并且必须很快)。
标签: java class configuration inner-classes bukkit