Вы можете написать свою собственную @NotNullArgs
аннотацию в качестве опции
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface NotNullArgs {
}
И аспект:
@Aspect
@Component
public class ArgumentMatcher {
@Around(value = "@annotation(NotNullArgs)")
public Object verifyAuthorities(ProceedingJoinPoint joinPoint) throws Throwable {
final Optional<Object> nullArg = Arrays.stream(joinPoint.getArgs())
.filter(Objects::isNull)
.findFirst();
if (nullArg.isPresent() && joinPoint.getArgs().length > 0) {
throw new IllegalArgumentException(); // or NPE
} else {
return joinPoint.proceed();
}
}
}
Тогда вы можете использовать это так:
@NotNullArgs
void methodToCall(Obj arg1, Obj arg2) { .... }
Это всего лишь черновик, но вы можете использовать этот код как точку для начала