2014-11-19 5 views
0

Допустим, у нас есть класс Java со статическим целой переменной инициализируется до нуля, например, как показано ниже:Изменение значений переменных инициализации с пользовательского ввода

public final Example { 
    public static final int integer = 0; 
} 

Вот что я пытаюсь сделать:

  • Попросите пользователя ввести значение для переменной (например, 5 для этого примера)
  • Измените сам исходный код, чтобы теперь переменной присвоено значение, введенное пользователем. И инициализируется этим значением в следующий раз программа запущена, lik е так:

public final Example { public static final int integer = 5; }

То, что я хотел бы знать:

  • возможно изменить исходный код, как это?

  • если да, как бы я это сделал?

намерение состоит в том, чтобы использовать пример класса для хранения и сохранить определенное количество переменных, с пользователем, способным изменять то, что эти переменные инициализируются из графического интерфейса. Измененные значения инициализации ДОЛЖНЫ сохраняться для повторного запуска программы.

Я понимаю, что есть способы сохранить и сохранить значения, отличные от использования файла класса, но я хотел бы использовать этот метод, если это возможно, потому что я считаю, что это было бы лучше всего для конкретного проекта, над которым я работаю.

спасибо за помощь, ребята!

+3

Да, это возможно. Нет, вы не должны этого делать. Сохраните это в файле или с помощью API предпочтений Java, как любой здравомыслящий человек. –

ответ

1

Способ сохранения и получения предпочтений в Java настойчивым способом выглядит следующим образом. Во-первых, получите экземпляр Preferences и передайте в класс, который вы хотите связать с этим набором настроек (используйте то, что является основным классом для вашего приложения, если вы не хотите использовать разные наборы предпочтений для разных частей приложения):

private Preferences prefs = Preferences.userNodeForPackage(MainWindow.class); 

Теперь для извлечения String -О значения с ключом someValue, вам нужно будет

String someValue = prefs.get("someValue", null); 

null на конце этого значения по умолчанию: это то, что вы получите обратно, если нет ничего хранятся с этим ключом. Разумеется, вам не обязательно иметь значение по умолчанию null.

Для хранения, вы могли бы сделать

prefs.put("someValue", valueToStore); 

Это будет делать это в хорошей платформы независимым способом, и сохранить его в нужном месте для любой системы вы работаете на.

Существует также .putInt() и .getInt() и т. Д. Для хранения других типов. Похоже, что int - это то, что вам больше всего нужно, но вы должны знать обо всех них.


Но в ответ на ваш конкретный вопрос, вы абсолютно не может (читай: не должны) иметь пользовательский ввод автоматически изменяя исходный код, который получает работать в следующий раз! Сохраните настройки с помощью объекта Preferences, а не путем изменения исходного кода.

Это не педантизм. Выполнение этого путем изменения исходного кода будет

  1. более хрупкий;
  2. Опасный;
  3. сложнее код;
  4. не поддерживается;
  5. более длинноволосый;
  6. нет портативный.

Этот список не является исчерпывающим :)

Смежные вопросы