#java #object #runtime
#Ява #объект #время выполнения
Вопрос:
Поэтому я осматривался и читал множество форумов и документацию по java, но, похоже, не могу найти надежного решения для того, что я пытаюсь сделать.
По сути, у меня есть класс модуля, как показано ниже:
/** * MODULE CLASS * This class will be the base for every Module inputed into the system * @author George */ public class Module { // -=VARIABLE DECLARATIONS=- private String moduleName; /* String variable to store the name of the module */ private String moduleLeader; /* String variable to store the name of the module leader */ // -=GETTERS=- public String getModuleName() {return this.moduleName;} /* Will return the name of the module */ public String getModuleLeader() {return this.moduleLeader;} /* Will return the name of the module leader */ // -=SETTERS=- public void setModuleLeader(String l) {this.moduleLeader = l;} /* Sets the name of the module leader to the inputed name */ public void setModuleName(String n) {this.moduleName = n;} //THIS NEEDS TO BE ADDED TO DESIGN DIAGRAMS // -=CONSTRUCTOR=- /** * Constructor to make a new object for the module * @param n (NAME) - String input to set the name of the module * @param l (LEADER) - String input to set the name of the module leader */ public Module(String n, String l) { this.moduleName = n; this.moduleLeader = l; } }
В моем графическом интерфейсе каждый модуль представлен в виде отдельной кнопки, которая при нажатии приведет вас на страницу модуля с помощью CardLayout. У меня также есть кнопка, с помощью которой пользователь может добавить модуль, вот где возникает моя проблема. Очевидно, что объект модуля будет определен как:
Module newModule = new Module("name", "leader");
Но как это позволит создать более одного объекта? Имя модуля будет получено из пользовательского ввода, поэтому я никак не могу указать имя объекта в исходном коде, и из того, что я прочитал, вы не можете задать имя объекта с помощью переменной.
Допустим, например, во время выполнения пользователь захочет создать два модуля. Один с именем «Java» и один с именем «Python». Как бы я это сделал? Очевидно, что первый объект будет создан просто отлично, используя приведенную выше инициализацию, но имя объекта будет сохранено как NewModule. Но тогда он не смог бы создать второй объект, так как у него не может быть двух объектов с одинаковым именем. Я потратил некоторое время, пытаясь понять хэш-карты, чтобы понять, может ли это быть мне полезно, но, честно говоря, я нахожу это довольно запутанным, и опять же, я не могу сказать, правильное ли это решение.
Я надеюсь, что я сформулировал это правильно, и вы можете понять мою проблему. Любая помощь в этом будет весьма признательна.
Заранее спасибо.
Комментарии:
1. Какие у вас вопросы о картах или списке? Я думаю, что реализация карты или списка может вам помочь. Вам нужно создать карту/Список и добавить новые экземпляры модуля в Карту/список, таким образом, вы можете получить все модули из этой карты или списка, отфильтровать по имени, отфильтровать по определенному ключу… зависит от вашей логики.
2. Можно создать списокlt;gt; или картуlt;gt;lt;gt;, набранную на конкретном объекте, например lt;gt;
Maplt;String,YourModuleObjectgt; mapCanReceiveObjectModuleBySomeKey;
илиListlt;YourModuleObjectgt; listCanReceiceObjectModule;