Я пытаюсь переопределить метод Preconditions.checkNotNull, который в настоящее время не может принимать определенные пользователем исключения.Я пишу свой собственный метод, чтобы он также начал принимать метод исключения.
Ожидаемый метод:
- Проверка, является ли переданный объект нулевым.
- Если переданный объект является нулевым, выдается исключение типа, переданного какпараметр.
- Если переданный объект не равен нулю, вернуть сам объект.
Я написал следующие функции:
public static < T extends Exception > T checkNotNull(T reference, Class < T > exClass, String errorMessage, Object...args) throws T {
if (reference == null) {
generateException(exClass, errorMessage, args);
}
return reference;
}
private static < T extends Exception > void generateException(Class < T > exClass, String errorMessage, Object...args) throws T {
try {
if (errorMessage == null) {
throw exClass.newInstance();
} else {
throw exClass.getDeclaredConstructor(String.class, Object[].class).newInstance(errorMessage, args);
}
} catch (InstantiationException | NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
e.printStackTrace();
}
}
Они определены в файленазывается ExceptionHandler.java.
Но, когда я пытаюсь вызвать его таким образом, происходит сбой:
ExceptionHandler.checkNotNull(myInputObject, InvalidInputException.class, "The input cannot be null");
Отображается следующая ошибка:
причина: нет экземплярасуществуют переменные типа (типов), поэтому список соответствует исключению