Вопрос: есть ли способ выполнить проверку кода для метода и проверить, не имеет ли он параметра, и предупредить меня перед компиляцией или даже выдать предупреждение в моей IDE.
Допустим, у меня есть аннотация @Initialize
@Retention(RetentionPolicy.RUNTIME)
public @interface Initialize {
int priority();
}
И с отражением я могу вызывать методы, помеченные @Initialize
public static void initMethods(Initializable clazz) {
TreeMap<Integer, Method> methods = prioritizedMethods(clazz.getClass().getDeclaredMethods());
methods.forEach((priority, method) -> {
try {
method.setAccessible(true);
Logger.debug("Invoking " + method.getName() + "...");
method.invoke(clazz);
} catch (IllegalAccessException | InvocationTargetException e) {
Logger.debug("Failed to invoke " + method.getName());
e.printStackTrace();
}
});
}
prioritzedMethods(Method[] method)
- это место, где я проверяю аннотации.
private static TreeMap<Integer, Method> prioritizedMethods(Method[] methods) {
HashMap<Integer, Method> taggedMethods = new HashMap<>();
for (Method method : methods) {
if (method.isAnnotationPresent(Initialize.class)) {
Initialize meta = method.getAnnotation(Initialize.class);
taggedMethods.put(meta.priority(), method);
}
}
return new TreeMap<>(taggedMethods);
}
Я хочу убедиться, что все методы, помеченные @Initialize
, не имеют параметров.