2012-11-23 9 views
16

Javaアプリケーションにキャッシュがあり、現在のキャッシュ実装をスワップして、それをguavaキャッシュに置き換えたいとします。ロード機能を持たないguavaキャッシュを使用する

残念ながら、私のアプリのキャッシュの使用方法は、グアバのキャッシュが動作するようには見えません。私が望むのは、空のキャッシュを作成し、「取得」メソッドを使用してキャッシュから項目を読み取り、「put」メソッドを使用してキャッシュに項目を格納することだけです。私は、 "get"コールがキャッシュにアイテムを追加しようとしているのを望んでいません。

LoadingCacheクラスには、必要なgetメソッドとputメソッドがあるようです。しかし、私は "ロード"機能を提供せずにキャッシュを作成する方法を考え出すのに問題があります。

LoadingCache<String, String> CACHE = CacheBuilder.newBuilder().build(); 

しかし、それは、このコンパイラエラー発生します:

私の最初の試みは、このでした互換性のない型を。変数がタイプK1、V1のインスタンスが存在しないので、CacheがLoadCacheに準拠するようになります。

明らかに、「ロード」メソッドを持つCacheLoaderを渡す必要があります。

は(私はちょうど例外をスローし、「ロード」メソッドを持っているのCacheLoaderを作成することができると思いますが、それは一種の奇妙で非効率です。正しいことをやっていることですか?)

+0

私は(あなたが投稿した情報から)それがキャッシュであるように、ちょうどマップではないと言いたくなります。 –

+2

@Sean Parsons:IMHOキャッシュとマップのより重要な違いは、前者がいつでも物事を忘れる可能性があることです。ローディングは追加機能です。 – maaartinus

+0

実際にキャッシュだったかどうかをもっと解明しようとしていました。 –

答えて

22

​​3210を返します非ロードキャッシュ。ちょうどあなたが欲しいもの。ちょうど使用する

Cache<String, String> cache = CacheBuilder.newBuilder().build(); 
+1

私にとってコンパイル時のエラーを示しています。 からに変換できませんでした。私はこのライブラリをAndroid用に使用しています。 – CreativeManix

+1

@CreativeManix CacheクラスではなくLoadCacheを使用する必要があります。 – Zai

+0

ありがとう@才私はそれを得た。 – CreativeManix

関連する問題