1

Scala新手在这里遇到问题:

val cache: LoadingCache[Long, String] = CacheBuilder.newBuilder()
    .maximumSize(1000)
    .expireAfterWrite(10, TimeUnit.MINUTES)
    .build(
      new CacheLoader [Long, String] {
        override def load(key: Long): String = key.toString
      })

并得到构建时间错误:错误:(12、11)类型不匹配;找到:com.google.common.cache.LoadingCache[Long,String] 必需:com.google.common.cache.LoadingCache[Long,String] 注意:Long <: Long,但 Java 定义的特征 LoadingCache 在类型 K 中是不变的. 您可能希望研究通配符类型,例如_ <: Long. (SLS 3.2.10) .build(

什么是正确的解决方法?为什么代码是错误的?谢谢。

4

1 回答 1

1

尝试用Long任何地方替换(由于自动装箱java.lang.Long,您仍然可以使用密钥访问它)。Long我记得在使用原语作为类型参数时,Java 中定义的泛型类型也有类似的错误。

于 2016-11-22T13:05:24.217 回答