Ein seltsamer generischer Edge-Fall mit Mockito.when () und generischer Typinferenz

Ich schreibe einen Testfall, der a verwendetjava.beans.PropertyDescriptor mit Mockito, und ich möchte das Verhalten von verspottengetPropertyType() willkürlich zurückgebenClass<?> Objekt (in meinem Fall,String.class). Normalerweise würde ich das tun, indem ich nur aufrufe:

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

Seltsamerweise kompiliert dies jedoch nicht:

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

Aber wenn ich den Typparameter spezifiziere, anstatt von der Folgerung abzuhängen:

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

alles ist hunky dory Warum kann der Compiler in diesem Fall den Rückgabetyp von when () nicht korrekt ableiten? Ich musste den Parameter vorher noch nie so angeben.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage