Я создаю класс для запуска основных методов нескольких других классов, построенных моим коллегой. Это работает путем сканирования папки на наличие файлов и запуска всех необходимых основных методов на основе имен файлов. У меня был большой кусок операторов if для запуска основных методов классов, соответствующих именам файлов.
Типичный оператор if имел вид:
if (f.contains("FileX")) {
Files.copy(Paths.get("D:\\" + yearmonth.format(date) + "\\" + dateFormat.format(date) + "\\" + f),
Paths.get("C:/eclipse-workspace/javarepository/rapporting/" + f),
StandardCopyOption.REPLACE_EXISTING);
String[] pasStr = new String[] { f };
FileX.main(pasStr);
}
FileX было именем строки, соответствующий класс имеет то же имя. Я хотел бы пропустить все операторы If и просто сделать это так (это не работает):
Files.copy(Paths.get("D:\\" + yearmonth.format(date) + "\\" + dateFormat.format(date) + "\\" + f),
Paths.get("C:/eclipse-workspace/javarepository/rapporting/" + f),
StandardCopyOption.REPLACE_EXISTING);
String[] pasStr = new String[] { f };
FileX.main(pasStr);
}
Проблема, конечно, в том, что fileX является строковым значением. Поэтому я пробовал все, что мог найти, например
Class cls = Class.forName("FileX");
cls.main(pasStr);
, но не могу найти решение, которое работает. Кто-нибудь знает, как заставить это работать?