【问题标题】:CacheBuilder.newBuilder().build is ambiguousCacheBuilder.newBuilder().build 不明确
【发布时间】:2015-03-25 21:28:56
【问题描述】:

我正在尝试为 Stash 插件使用 sn-p 代码,但编译器不断给我一个似乎无法解决的错误。它正在使用 com.google.common.cache.Cache (Guava)

 static final RepositorySettings DEFAULT_SETTINGS = new RepositorySettings(0);
 private final PluginSettings pluginSettings;

 private final Cache<Integer, RepositorySettings> cache = CacheBuilder.newBuilder().build(
        new CacheLoader<Integer, RepositorySettings>()
 {
    @Override
    public RepositorySettings load(@Nonnull Integer repositoryId)
    {
        @SuppressWarnings("unchecked")
        Map<String, String> data = (Map) pluginSettings.get(repositoryId.toString());

        return data == null ? DEFAULT_SETTINGS : deserialize(data);
    }
});

.build 给我以下错误

The method build(CacheLoader<? super Integer,RepositorySettings>) is ambiguous for the type CacheBuilder<Object,Object>

【问题讨论】:

  • Cache 有一个不带参数的build() 方法,而LoadingCache 有一个build() 方法,它采用CacheLoader 作为参数。

标签: java caching guava ambiguous


【解决方案1】:

Cache 有一个 build() 方法,它不带参数,而LoadingCache 有一个 build() 方法,它采用 CacheLoader 作为参数。

private final LoadingCache<Integer, RepositorySettings> cache = CacheBuilder.newBuilder().build(
                      new CacheLoader<Integer, RepositorySettings>() {
    @Override
    public RepositorySettings load(@Nonnull Integer repositoryId) {
    @SuppressWarnings("unchecked")
    Map<String, String> data = (Map) pluginSettings.get(repositoryId.toString());

    return data == null ? DEFAULT_SETTINGS : deserialize(data);
    }
}); 

这应该可行。

作为参考: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/cache/CacheBuilder.html

【讨论】:

  • 唯一改变的是缓存变量的类型,对吧?我将你的代码粘贴到我的上面,它给了我同样的错误。
  • 我刚刚阅读了您发布的参考资料。它说“自 10.0 起”。 Eclipse 向我展示了三种构建方法,一种没有参数,另一种采用 CacheLoader 参数(一个返回 Cache,另一个返回 LoadingCache)。我在 Eclipse 中阅读的 javadoc 似乎是 11.0 版。不过,采用 CacheLoader 参数的两种方法都被标记为已弃用。
  • @Amaranth 我尝试复制模棱两可的消息,(使用从 Maven 中心下载的 Guava 18.0(使用 Netbeans)),但它没有给我一个,不是你的代码,也不是我的。
  • 我会尝试更新番石榴。感谢您的帮助。
猜你喜欢
  • 2016-10-10
  • 1970-01-01
  • 2016-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-26
  • 2016-05-29
相关资源
最近更新 更多