2016-10-12 4 views
-2

私はJavaベースのアプリケーションを開発中です。私はマップをehcacheに保存し、後でそれを取得したいと思います。下はコードです。Mapオブジェクトを取得する際に互換性のない型の例外があります。

Map<String,String> map = new HashMap<String,String>(); 
map.put("1","AAA"); 
map.put("2","BBB"); 

final Cache cache = getCache(); // creating the cache object 
cache.removeAll(); 
cache.put(new Element("myMap", map));//Storing the java.util.Map object in Cache 
//to get the cache 
final Element ele = cache.get("myMap"); 
Map<String,String> map = (ele == null ? null : ele); 

その私に、以下のエラーを投げ

incompatible types. found net.sf.ehcache.Element required java.util.Map<String,String> 

私はehcacheを中Mapオブジェクトを格納する方法をアドバイスし、その要素を取得してください。

+0

その他: '(ele == null?null:ele)'で正確に何をしようとしていますか?これはちょうど「エレ」と同じです。 –

+0

私は、キャッシュに格納されているmyMapオブジェクトを取得したい。eleがnullでない場合、マップオブジェクトが格納されているeleを返す。 @AndyTurner – user222

+0

私はehcacheを使ったことはありませんが、[Element](http://www.ehcache.org/apidocs/2.9/net/sf/ehcache/Element.html)クラスのJavadocを簡単に見てみると、 getObjectKeyメソッドとgetObjectValueメソッドがあります。私は、getObjectValueメソッドを使ってマップを取得し、Map にキャストできると思います。 –

答えて

0

あなたのコードコメントにはマップが保存されていますが、コードには要素が保存されています。要素が地図ではないことは驚くべきことではありません。

http://www.ehcache.org/apidocs/3.1.3/org/ehcache/Cache.html#put-K-V-のためのドキュメントを参照してください、彼らはかなり明確だ:

cache.put("myMap", map); 

私はあなたのコードはコンパイル方法を実際に完全にはわかりません。単一のパラメータを取るputのバージョンは存在しません。

+0

いいえ、私は以下のエラーが表示されます。net.sf.ehcache.Elementは、cache.put( "myMap"、map)を使用していてもjava.util.Map user222

0

ネストされたマップ(マップとEhCacheマップ)が混乱していると思います。

基本的に{cache.put(new Element( "myMap"、map))}を実行すると、ehcacheマップにid: "myMap"というエントリが1つ追加され、 'map'が評価されます。しかし、技術的には、このエントリはehcacheのキーと値をカプセル化する 'Element'型の単一のオブジェクトです。

再度検索するには、要素をもう一度読み込み(これは挿入したものです)、この要素から値(マップ)を取得します。下記のチェック:

final Cache cache = cacheManager.getCache("123"); // creating the cache object 
cache.removeAll(); 
cache.put(new Element("myMap", map));//Storing the java.util.Map object in Cache 
// get your element back 
final Element ele = cache.get("myMap"); 
// get the value of our object. ehcache works with generic objects so you need tocache to your map. Doing a cast since it works with generic object 

map = (Map<String, String>) ele.getObjectValue(); 

私はあなたは自分のコードをデバッグし、データがあなたのオブジェクトの内側にあるものを確認することができ、この種の問題のためのアドバイスです。次に、何が起こっているのかを簡単に把握できます。

関連する問題