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
      })

ビルド時のエラーが発生しました: Error:(12, 11) type mismatch; found : 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 に答える