he el siguiente código para la construcción de una memoria caché utilizando Google Colecciones:La implementación de una interfaz Java en 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
}
})
Y yo estoy recibiendo el mensaje de error:
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] {
^
Me pregunto por qué el tipos no coinciden?
El código actual es:
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)
}
Saludos cordiales, Ali
PS - Estoy usando google-colecciones v1
no funciona, ahora me sale este error: tipo clase requerida, pero com.google.common.base.Function [_, _] encontró nueva com.google.common.base.Function [ _, _] También probé -explicar los tipos, en realidad el resultado es realmente difícil de entender: java.lang.Object con com.google.common.base.Function [_, _]
@Ali: parece que solo has probado la primera sugerencia. Pegué el código completo para la segunda sugerencia ahora. Además, agregue el resultado de '-explaintypes' a su pregunta. –
En realidad, la salida es bastante grande, agregué el código real que uno puede copiar y pegar para reproducir el mensaje de error. Por favor, avíseme si hay algo más que proporcionaré. –