如何解决来自继承类的单个静态变量
我有一个类,我希望从父类继承几乎所有东西,其中父类具有静态方法和变量,我希望子类具有自己的静态变量“副本”
实际示例:
public abstract class ConfigValues
{
private final static Json file;
private final static HashMap<String,String> values = new HashMap<>();
public ConfigValues(final Json file)
{
this.file = file;
reloadValues();
}
public static String getValue(final String key)
{
return values.get(key);
}
public void reloadValues()
{
values.clear();
for (final String data : file.getSection(file.getName()).keySet())
values.put(data,file.getString(data));
}
public final class MessagesValues extends ConfigValues
{
public MessagesValues(final MessagesConfig messagesConfig)
{
super(messagesConfig.getJson());
}
}
public final class SettingsValues extends ConfigValues
{
public SettingsValues (final SettingsConfig settingsConfig)
{
super(settingsConfig.getJson());
}
}
打开json文件并将文件中的所有值放入哈希表的位置,因此将它们缓存,但是它们没有访问相同的内存,因此SettingsValues.getValue(“ settings.health”)将返回100但MessagesValues.getValue(“ settings.health”)将返回null。
我想发生的基本上是
public final class MessagesValues
{
private final static Json file;
private final static HashMap<String,String> values = new HashMap<>();
public MessagesValues(final Json file)
{
this.file = file;
reloadValues();
}
public static String getValue(final String key)
{
return values.get(key);
}
public void reloadValues()
{
values.clear();
for (final String data : file.getSection("messages")
values.put(data,file.getString(data));
}
}
public final class SettingsValues
{
private final static Json file;
private final static HashMap<String,String> values = new HashMap<>();
public SettingsValues(final Json file)
{
this.file = file;
reloadValues();
}
public static String getValue(final String key)
{
return values.get(key);
}
public void reloadValues()
{
values.clear();
for (final String data : file.getSection("settings")
values.put(data,file.getString(data));
}
}
如果这有任何意义,我似乎真的无法解释我希望发生的事情:/
我碰到过这个Inheriting static variable from abstract class及其基本上是我想要的,但是我希望有一种更好的方法,因为在该示例之后,我将完全重写每个新类的代码,因此那时的继承点是什么,我根本就没有简化代码?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。