Альтернативная практика для жесткого кодирования текстовых строк в программе 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