Я пытаюсь написать мод Minecraft, который добавляет в игру некоторые механики ролевой игры.
НО, что еще более важно, этот вопрос потенциально позволяет другим пользователям добавлять в мод свои собственные системы ролевых игр, создавая растущий список переменных.
В настоящий момент переменные объявляются в «Системных классах RPG» и загружаются в другой «Регистр». Class», в котором размещено несколько массивов, по одному на каждую переменную. Я задумался: «Где будут храниться эти данные?» и я на самом деле не знаю, но я беспокоился, что она может храниться в оперативной памяти.
Итак, если у вас будет достаточно переменных, или систем RPG, или того и другого, это может вызвать некоторое ненужное раздувание.
Поэтому я изучил другие способы оценки информации и обнаружил, что могу загрузить сами «Системные классы RPG» в массив в «Зарегистрировать класс» в виде строк. Затем я могу использовать отражение для доступа к переменным. И я надеюсь, что это подход, дружественный к ОЗУ.
Итак, дополнительный вопрос: влияет ли какой-либо метод на ОЗУ так, как я думаю, или я совершенно неправ?
Но мой главный вопрос: как лучше всего сохранять такого рода модульную информацию в программе Java? Это массивы, отражение или какая-то другая реализация, о которой я не знаю?
Заранее спасибо.
Изменить:
Спасибо всем, думаю, я сильно передумал. Нравится МНОГО МНОГО. Кроме того, я был совершенно неправ насчет оперативной памяти. А пока я остановлюсь на массивах.
Кто-то сказал, что было бы полезно, если бы я опубликовал некоторый код, так и сделаю.
Системный код ролевой игры:
Код: Выделить всё
public class GenericRPGSystem {
//set default values
static String name = "rpgsystem.grpg.name";
static boolean enabled = true;
static List description = List.of("rpgsystem.grpg.desc1");
static int maxLevel = 10;
static int startingLevel = 1;
static int[] expList;
public static void init() {
expList = ArrayUtils.addAll(expList, 1000);
expList = ArrayUtils.addAll(expList, 2000);
expList = ArrayUtils.addAll(expList, 3000);
expList = ArrayUtils.addAll(expList, 4000);
expList = ArrayUtils.addAll(expList, 5000);
expList = ArrayUtils.addAll(expList, 6000);
expList = ArrayUtils.addAll(expList, 7000);
expList = ArrayUtils.addAll(expList, 8000);
expList = ArrayUtils.addAll(expList, 9000);
expList = ArrayUtils.addAll(expList, 10000);
//Register
if (enabled) {
RPGSystemRegister.register(name, description, startingLevel, maxLevel, expList);
}
}
Код: Выделить всё
public class RPGSystemRegister {
static String[] rpgSystems;
static List rpgSystemsList;
static List descriptions = new ArrayList();
static int[] startingLevels;
static int[] maxLevels;
static List expLists = new ArrayList();
public static void register(String name, List description, int startingLevel, int maxLevel, int[] expList){
rpgSystems = ArrayUtils.addAll(rpgSystems, name);
rpgSystemsList = Arrays.asList(rpgSystems);
descriptions.add(description);
startingLevels = ArrayUtils.addAll(startingLevels, startingLevel);
maxLevels = ArrayUtils.addAll(maxLevels, maxLevel);
expLists.add(expList);
}
public static String[] getRpgSystems() {
return rpgSystems;
}
public static List getRpgSystemsList() {
return rpgSystemsList;
}
public static List getDescriptions() {
return descriptions;
}
public static int[] getStartingLevels() {
return startingLevels;
}
public static int[] getMaxLevels() {
return maxLevels;
}
public static List getExpLists() {
return expLists;
}
Спасибо всем за помощь, я очень ценю это!