В настоящее время я автоматизирую процесс обработчика данных. Под автоматизацией я подразумеваю, что DataHandlers запускаются автоматически через отражение в зависимости от конкретной конфигурации.
Но я нахожусь в состоянии, когда я не знаю, как мне решить эту проблему. Именно об этом мире кода:
Class<?> clazz = classLoader.loadClass(d);
Object values = clazz.getMethod("values").invoke(null);
RSA.addDataHandler(clazz,new DataHandlerSetAdapter<>(values));
Я загружаю класс через classLoader и вызываю статический метод , называемый "values", который возвратил кучу, как вы сказали, правильно, значений!
Теперь проблема в new DataHandlerSetAdapter<>(values))
, который имеет ошибку в <>
, потому что Объект не знает, какие классы s инициировать.
Невозможно определить аргументы (невозможно разрешить конструктор)
Если бы этот код был на C #, я бы использовал typeof (), но в JAVA нет ничего подобного, возможно instanceof, но я не могу использовать это на данный момент. Кстати, .values () возвращает массив того же типа (enum).
Как я могу решить эту проблему?
// редактировать
с методом .getReturnType()
в методе Я бы получил тип возвращаемого значения, но я не могу применить его к DataHandlerSetAdapter<>
Класс DataHandlerSetAdapter
public class DataHandlerSetAdapter<T> implements DataHandler<T> {
private final Set<T> values = new ConcurrentSkipListSet<>();
.
.
.
}