Um caso de borda de genéricos estranho com Mockito.when () e inferência de tipo genérico

Eu estou escrevendo um caso de teste que usa umjava.beans.PropertyDescriptor usando Mockito, e eu quero zombar do comportamento degetPropertyType() para retornar um arbitrárioClass<?> objeto (no meu caso,String.class). Normalmente, eu faria isso apenas invocando:

// we already did an "import static org.mockito.Mockito.*"
when(mockDescriptor.getPropertyType()).thenReturn(String.class);

No entanto, curiosamente, isso não compila:

cannot find symbol method thenReturn(java.lang.Class<java.lang.String>)

Mas quando eu especificar o parâmetro type em vez de depender da inferência:

Mockito.<Class<?>>when(mockDescriptor.getPropertyType()).thenReturn(String.class);

tudo é bonitão. Por que o compilador não pode inferir corretamente o tipo de retorno de when () neste caso? Eu nunca precisei especificar o parâmetro antes disso.

questionAnswers(1)

yourAnswerToTheQuestion