Что лучше хранить данные модульной системы в наборах массивов или использовать отражение, чтобы получать данные прямо изJAVA

Программисты JAVA общаются здесь
Anonymous
Что лучше хранить данные модульной системы в наборах массивов или использовать отражение, чтобы получать данные прямо из

Сообщение Anonymous »

Я самоучка, поэтому прошу прощения, если в названии неправильно используются термины.
Я пытаюсь написать мод 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;
}
РЕДАКТИРОВАТЬ 3/Ответ: ТАК, я был смущен тем, как мало я знал, когда читал ответы в первый раз и не читал их полностью. Оказывается, у YellowFlash есть отличная информация о том, что делать, и использование класса интерфейса, вероятно, является лучшей практикой для подобных вещей. Это, конечно, работает очень хорошо, хотя и не самое лучшее.
Спасибо всем за помощь, я очень ценю это!

Вернуться в «JAVA»