Другое редактирование: удален параметр типа из метода EDIT (снова): если вам не нужно создавать экземпляр T
(что, я считаю, вам не нужно), вы можете сделать то, что ниже. Если API не находится под вашим контролем, вам придется написать Class
вместо Class<T>
и привести.
@Override
public Optional<T> parse (String fileString, Class<T> someClass) {
File file = new File(fileString);
T t = null;
try {
t = (T) getUnmarshaller().unmarshal(file);
} catch (JAXBException e) {
e.printStackTrace();
}
return (Optional<T>) Optional.ofNullable(t);
}
Если вам нужен объект Class
для того, чтобы unmarshaller мог Если вы знаете, какой объект создать, то единственный способ сделать это - с помощью отражения (такова природа класса Class
. Кроме того, я почти уверен, что JAXB все равно использует отражение внутри себя, и все это небезопасно.
Кроме того, не похоже, что вы используете someClass
, так что вы, вероятно, могли бы иметь метод только с первым параметром. Но поскольку вы переопределяете какой-либо метод в суперклассе, вам, возможно, придется просто попробовать что выше.