Неудачный тип передачи не может дать вам NullPointerException
.
Object o = new Integer(43);
String s = (String) o; // throws ClassCastException
При типе null
исключение не выдается вообще.
o = null;
String s = (String) o; // no exception
Поэтому теория о том, что getFoo
возвращает null
, правдоподобна. Но возможно также, что userDetailsService
- это null
или что NPE брошен в getFoo
.
Вы должны быть в состоянии различить эти случаи, внимательно читая трассировку стека ... которую вы не включили в свой вопрос (tsk, tsk).