2016-07-13 6 views
0

このコードはうまくコンパイルされます。しかし、私がLong[]の代わりにArrayList<Long>を使用したいのであれば、私はちょっとしたトラブルに遭遇します。 Long[].classArrayList<Long>.classに置き換えることはできません。これは、テンプレートオブジェクトが動的にコンパイルされ、既存の.classファイルを持たないためと思われます。代わりに私は何を使用すべきですか?Ehcache 3を使用してArrayList <Long>を値としてキャッシュを構築する方法は?

public class junky{ 
    PersistentCacheManager myStore; 
    String filename; 
    Cache<Long, Long[]> myCache; 

    public junky(String filename){ 
     this.filename = filename; 
     myStore = CacheManagerBuilder.newCacheManagerBuilder() 
      .with(CacheManagerBuilder.persistence(this.filename)) 
      .withCache("threeTieredCache", 
        CacheConfigurationBuilder.newCacheConfigurationBuilder(
          Long.class, Long[].class, 
          ResourcePoolsBuilder.newResourcePoolsBuilder() 
            .heap(10, EntryUnit.ENTRIES) 
            .offheap(10, MemoryUnit.GB) 
            .disk(400, MemoryUnit.GB) 
        ) 
      ).build(true); 
     myCache = myStore.getCache("myCache", Long.class, Long[].class); 
    } 
} 

答えて

0

ここでは、Javaのジェネリックの制限を打ちのめしています。キャッシュを提供するタイプ情報にはList.classを貼り付ける必要があります。

これにより、キャッシュがCache<Long, List<Long>>と宣言されるのを妨げることはありませんが、いくつかの場所で警告が生成され、設定中にキャストが必要になることがあります。

+0

ありがとうございます。私は推測と推測でそれを理解したことはないだろう:D – BAMF4bacon

関連する問題