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.