Альтернативная практика для жесткого кодирования текстовых строк в программе Java?

В моей программе много строк и повторяющихся строк. Есть ли способ отделить текстовые строки от исходного кода. Я не хочу жестко кодировать строку в моей программе.

В PHP у меня был файл со списком переменных для каждой строки. Но поскольку Java - это ООП, я не знаю, как реализовать ту же идею.

Моя программа - это программа командной строки.

4 ответа

Решение

Если вы используете Java 1.7 (SE 7), вы можете использовать java.util.Properties. Документация Java дает хорошее объяснение. Вот фрагмент кода:

String fileName = "/path/to/file/thePropertiesFileName.properties";
FileReader reader = new FileReader(fileName);
Properties prop = new Properties();
prop.load(reader);

Еще одна альтернатива - иметь файл свойств (ключ-значение), такой же, как в PHP.

Даже если это программа командной строки, вы все равно можете иметь файл свойств. Вы можете передать местоположение файла в качестве аргумента команды (или) поместить ваш файл относительно класса и использовать относительный путь для доступа к файлу.

Если ваши строки не нужно изменять не-Java разработчикам, вы можете просто поместить их все в отдельный класс, например так:

public final class Texts {
    public static final String MYSTR1 = "str1";
    public static final String MYSTR2 = "str2";
    ...
    private Texts() {} // Prevents instantiation
}

Это облегчает некоторые задачи по обслуживанию, например:

  • Вы можете реорганизовать имя константы, чтобы все виды использования были автоматически изменены.
  • Вы можете легко найти, кто использует каждую константу.
  • Вы можете быстро узнать, что является значением константы, и вы можете быстро перейти к ней.

Используйте класс статики, чтобы удерживать свои глобалы.

public class Statics
{
 public static final String GLOBAL_NAME = "Stuff";
 public static final int GLOBAL_INT = 9999;
}

И получить доступ к этому, как это в ваших классах.

Statics.GLOBAL_NAME
Другие вопросы по тегам