Динамически называть экземпляр класса? - PullRequest
0 голосов
/ 21 ноября 2011

Просто очень быстрый вопрос о чем-то маленьком.Следующее является частью задания по программированию для моего класса программирования 2.Основное внимание уделяется наследованию и множеству классов.Я ответил на вопрос, но хочу объединить классы в основную функцию и на самом деле создать что-то, а не просто передать минимальный минимум.

Мой вопрос - раздел кода ниже.Пользователь запускает программу, ему предоставляется диалоговое окно, спрашивающее его о том, что он хочет добавить (компакт-диск или фильм, оба они являются отдельными классами).

Хотя я хотел бы, чтобыПользователь фактически называет конкретный экземпляр класса во время работы программы.Таким образом, пользователь, например, нажмет кнопку «Фильм», будет предложено ввести имя, а затем следующую строку, чтобы использовать конструктор в классе фильма для создания нового экземпляра класса с именем, введенным пользователем?Это возможно?Я попытался использовать простую строку x = JOptionpane, а затем назвал класс x, но это не сработало.Я думаю, что может быть какой-то метод, который будет ссылаться на строку?как содержимое .x может быть?

заранее спасибо!

import javax.swing.JOptionPane;
public class Main 
{

    public static void main (String args [])
    {
    Object[] options = {"Movie",
                "CD",
                "Cancel"};
            int n = JOptionPane.showOptionDialog(null, "Would you like to add an item?","Product",
                        JOptionPane.YES_NO_CANCEL_OPTION,
                            JOptionPane.QUESTION_MESSAGE,
                                null,
                                    options,
                                        options[2]);

    switch(n)
    {
    case 0: 
    String moviet = JOptionPane.showInputDialog("Title:");
    int movieID = Integer.parseInt(JOptionPane.showInputDialog("ID:"));
    Movie moviett = new Movie(moviet, movieID);


    }


    }

}

Ответы [ 2 ]

4 голосов
/ 21 ноября 2011

Если это не слишком далеко от содержания вашего класса, вы можете использовать Map<String, Media> 1 для хранения экземпляров, идентифицированных строкой, указанной во время выполнения.*


1 Предполагая, что Movie и CD оба выдвигаются / реализуют Media.

2 голосов
/ 21 ноября 2011

Java не работает таким образом, и на самом деле имена переменных гораздо менее важны, чем вы думаете, и почти не существуют в скомпилированном коде.Вместо этого как насчет использования Strings для установки поля класса Movie, возможно, поля String с именем «name».Если вы хотите получить экземпляр класса на основе строки, рассмотрите возможность использования карты, такой как HashMap.

...