38

私の Java アプリにはキャッシュがあり、現在のキャッシュの実装をスワップ アウトして、グアバ キャッシュに置き換えたいと考えています。

残念ながら、私のアプリのキャッシュの使用法は、guava のキャッシュのように見える方法と一致していないようです。私が望むのは、空のキャッシュを作成し、「get」メソッドを使用してキャッシュからアイテムを読み取り、「put」メソッドでアイテムをキャッシュに保存できることだけです。「get」呼び出しでアイテムをキャッシュに追加しようとしないでください。

LoadingCache クラスには、必要な get メソッドと put メソッドがあるようです。しかし、「ロード」機能を提供せずにキャッシュを作成する方法がわかりません。

私の最初の試みはこれでした:

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

しかし、それは次のコンパイラ エラーを引き起こします: 型に互換性がありません。タイプ変数 K1、V1 のインスタンスが存在しないため、Cache は LoadingCache に準拠します

どうやら、「ロード」メソッドを持つ CacheLoader を渡す必要があるようです。

(例外をスローするだけの「ロード」メソッドを持つ CacheLoader を作成できると思いますが、それは奇妙で非効率的です。それは正しいことですか?)

4

1 に答える 1

50

CacheBuilder.build()非ロード キャッシュを返します。欲しいものだけ。使うだけ

Cache<String, String> cache = CacheBuilder.newBuilder().build();
于 2012-11-23T16:55:09.877 に答える