У меня есть интерфейс «Инструкция», и некоторые инструкции реализуют его (Add, Sub, Mul, Jmp ...), для выполнения этих инструкций я сохраняю их в объекте List и впоследствии вызываю метод execute ().Я читаю эту инструкцию из файла и хочу создать соответствующий класс с помощью чтения строки из файла, но когда я вызываю constructor.newInstance (...), я теряю тип ссылки и не могувызывать методы без instanceofs и грязных приведений (я хочу их избегать).
List<Instruction> res = new ArrayList<>()
String className = "Add";
Class<?> classLoaded = Class.forName("instructions." + className);
Constructor<?> constructor = classLoaded.getConstructors()[0];
Object obj = constructor.newInstance(paramsOfConstructor);
res.add(obj);
Это работает так, как я хочу, чтобы это работало, но я хочу избегать как можно более грязных приведений
Instruction obj = (Instruction) constructor.newInstance(paramsOfConstructor);
res.add(obj);
PD: paramsOfConstructor
- это все объекты / примитивы, которые я даю конструктору, я не включаю код для их получения, потому что это будет копирование / вставка примерно из 30 строк.При необходимости я могу также скопировать их.