Есть метод для добавления пар ключ - значение в проперти файл словаря, дело в том, что я не знаю как его сделать универсальным, т.е. чтобы можно было использовать один метод на разные словари. Например словарь англо-русский и немецко-английский, при том, что условия к ключу везде будут разные. Не добавлять же отдельный метод для каждого словаря, просто если их будет 1000?
public void addToDictionary(String key, String value){
if (key.matches("[A-z]{4}")){
propFile.setProperty(key, value);
try {
propFile.store(new PrintWriter(new FileOutputStream(propConsole.getProperty(fileName)), true), null);
} catch (IOException e) {
e.printStackTrace();
}
map.put(key, value);
System.out.println(propConsole.getProperty("successful.entry"));
}
else
System.out.println(propConsole.getProperty("error.entry"));
}
Для остальных методов так сделать получилось, вот пример
public void delete(String key){
map.entrySet().removeIf(next -> next.getKey().equals(key));
propFile.remove(key);
try {
propFile.store(new PrintWriter(new FileOutputStream(propConsole.getProperty(fileName)), true), null);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(propConsole.getProperty("remove.entry"));
}
fileName - я инициализирую при загрузке класса
public void startProgram(){
do {
System.out.println(properties.getProperty("choice"));
choice = scanner.nextLine();
if (choice.equals("1")) {
dictionary.loadDictionaryFromFile("dictionary.char");
break;
}else if (choice.equals("2")) {
dictionary.loadDictionaryFromFile("dictionary.number");
break;
}
}while (!choice.equals("1") || !choice.equals("2"));
Определите в классе два поля и проинициализируйте их в конструкторе
class MyDictionary {
private final String fileName;
private final String keyMatch;
public MyDictionary(String fileName, String keyMatch) {
this.fileName = fileName;
this.keyMatch = keyMatch;
}
А дальше просто обращайтесь к ним
public void addToDictionary(String key, String value){
if (key.matches(keyMatch)){
Если у вас создание объекта класса и связывание его со словарем разные операции, то добавьте регулярное выражение параметром в метод loadDictionaryFromFile()
void loadDictionaryFromFile (String fileName, String keyMatch) {
this.fileName = fileName;
this.keyMatch = keyMatch;
..............
}
(тогда нужно будет убрать модификаторы final из объявления полей)
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости