Mockito erreur avec la méthode qui retourne Option<T>

J'ai une interface avec la méthode suivante

public interface IRemoteStore {

    <T> Optional<T> get(String cacheName, String key, String ... rest);

}

L'instance de la classe implémentant l'interface est appelée à remoteStore.

Quand je se moquer de ce avec mockito et d'utiliser la méthode lorsque:

Mockito.when(remoteStore.get("a", "b")).thenReturn("lol");

J'obtiens l'erreur:

Ne peut pas résolu la méthode 'thenReturn(java.lang.String)'

Je pensais que cela a à voir avec le fait que se retourne une instance de la classe Optionnelle j'ai donc essayé ceci:

Mockito.<Optional<String>>when(remoteStore.get("cache-name", "cache-key")).thenReturn
        (Optional.of("lol"));

Mais, j'obtiens cette erreur:

quand (Facultatif '<'String'>') dans Mockito ne peut pas être appliqué à (Facultatif'< Objet>').

La seule fois où il a travaillé avec ceci:

String returnCacheValueString = "lol";
Optional<Object> returnCacheValue = Optional.of((Object) returnCacheValueString);
Mockito.<Optional<Object>>when(remotestore.get("cache-name", "cache-key")).thenReturn(returnCacheValue);

Mais au-dessus renvoie une instance de l'Option '< Objet> " et non pas Facultative '<'String'>.

Pourquoi ne pourrais-je pas simplement retourner une instance de l'Option '<'String'> " directement? Si je pouvais, comment dois-je faire?

N'êtes-vous pas manque une parenthèse dans le premier code chunk?
Aussi pour info, ne pas confondre java.util.Optional avec com.google.common.base.Optional, ce dernier doit être importé ici.

OriginalL'auteur Yu Lin Chen | 2015-06-19