У меня есть класс контроллера, он в основном содержит список событий.JAVA создает список событий из текстового файла
ArrayList <Event> eventList = new ArrayList<>();
Контроллер имеет метод addEvent (событие e).
Я расширил класс контроллера, чтобы быть конкретным контроллером и расширенным событием, чтобы обеспечить определенные типы событий для моего нового контроллера как внутренних классов.
public class NewController extends Controller{
//.. controller code/methods
class SpecificEvent extends Event{
//..
}
}
Я жёстко мой контроллер работает, как задумано, но я хотел бы быть в состоянии сделать конфигурационный файл, который будет заселить мой список событий.
Я сделал .txt файл со списком событий:
Event=SpecificEvent, Arg1=<Integer>val, .. ArgN=<?>val, Event=SpecificEventN, ArgN=<?>val
Я отфильтрованы имя класса события и аргументы в списке:
fileContents.stream()
.forEach(s -> {
Scanner sc = new Scanner(s)
.useDelimiter("=|,");
while (sc.hasNext()){
Scanner sc2 = new Scanner(sc.next()).useDelimiter("[//w]");
args.add(sc.next());
}
});
Моя проблема заключается в том, что события имеют разные типы и длины аргументов конструктора; Я не знаю, как их построить из моего файла. Я новичок в этой работе, и я полагаю, что это запуск реализации мельницы.
Я пользуюсь пакетом Reflect? Пожалуйста помоги. Я думал о фабрике событий?
Да, вы должны использовать отражение. Начните с рассмотрения всех методов [java.lang.Class] (http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html). – VGR
Почему обычная сериализация не опция? – Fildor
@VGR К сожалению, я не ожидал ответа. Это означает, что мне, скорее всего, понадобится создать какой-то оператор switch, основанный на строке типа события на моей фабрике событий. Благодаря! – iinertiaii