Je le code suivant pour la construction d'un cache à l'aide des collections google:Implémentation d'une interface java dans Scala
val cache = new MapMaker().softValues().expiration(30,
TimeUnit.DAYS).makeComputingMap(
new com.google.common.base.Function[String,Int] {
def apply(key:String):Int ={
1
}
})
Et je reçois le message d'erreur suivant:
error: type mismatch;
found : java.lang.Object with
com.google.common.base.Function[java.lang.String,Int]{ ... }
required: com.google.common.base.Function[?, ?]
new com.google.common.base.Function[String,Int] {
^
Je me demande pourquoi la les types ne correspondent pas?
Le code actuel est:
import com.google.common.collect.MapMaker
trait DataCache[V] {
private val cache = new MapMaker().softValues().makeComputingMap(
new com.google.common.base.Function[String,V] {
def apply(key:String):V = null.asInstanceOf[V]
})
def get(key:String):V = cache.get(key)
}
Meilleures salutations, Ali
PS - J'utilise google-collections v1
ne fonctionne pas, maintenant je reçois cette erreur: type de classe requis, mais com.google.common.base.Function [_, _] trouvé nouvelle com.google.common.base.Function [ _, _] J'ai également essayé -explaintypes, en fait la sortie est vraiment difficile à comprendre: java.lang.Object avec com.google.common.base.Function [_, _]
@Ali: il semble que vous avez seulement essayé la première suggestion. J'ai collé le code complet pour la deuxième suggestion maintenant. En outre, ajoutez la sortie de '-explaintypes' à votre question. –
En fait, la sortie est assez grande, j'ai ajouté le code réel que l'on peut simplement copier coller pour reproduire le message d'erreur. S'il vous plaît laissez-moi savoir s'il y a autre chose que je fournirai. –