gpt4 book ai didi

java - Google Guava - 除了 go KEY 外,还将参数传递给加载方法

转载 作者:搜寻专家 更新时间:2023-11-01 03:24:26 25 4
gpt4 key购买 nike

我编写了一个程序来使用 Google Guava 缓存对象。我的问题是如何将附加参数传递给 Guava Load 方法。这是代码。您在下方看到这一行 - 我将 fileId 和 pageno 作为键 - cache.get(fileID+pageNo);。现在,当调用 cache.get 并且该键不在缓存中时 - guava 将调用我在下面给出的类 PreviewCacheLoader 的加载方法。

public class PreviewCache {
static final LoadingCache<String, CoreObject> cache = CacheBuilder.newBuilder()
.maximumSize(1000)
.expireAfterWrite(5, TimeUnit.MINUTES)
.build(new PreviewCacheLoader());

public CoreObject getPreview(String strTempPath, int pageNo, int requiredHeight, String fileID, String strFileExt, String ssoId) throws IOException
{
CoreObject coreObject = null;
try {
coreObject = cache.get(fileID+pageNo, HOW TO PASS pageNO and requiredHeight because I want to keep key as ONLY fileID+pageNo );
} catch (ExecutionException e) {
e.printStackTrace();
}
return coreObject;
}
}

除了关键参数外,如何将上面的参数int和String传递给下面的Load方法

public class PreviewCacheLoader extends CacheLoader<String, CoreObject> {

@Override
public CoreObject load(String fileIDpageNo, HOW TO GET pageNO and requiredHeight) throws Exception {

CoreObject coreObject = new CoreObject();
// MAKE USE OF PARAMETERS pageNO and requiredHeight
// Populate coreObject here
return coreObject;


}

最佳答案

对于初学者来说,使用 fileId + pageNo 作为 String 键而不是创建一个合适的对象是非常糟糕的编程习惯。 (这称为“字符串类型”代码。)解决问题的最佳方法可能如下所示:

class FileIdAndPageNo {
private final String fileId;
private final int pageNo;
...constructor, hashCode, equals...
}
public CoreObject getPreview(final int pageNo, final int requiredHeight, String fileID) { throws IOException
{
CoreObject coreObject = null;
try {
coreObject = cache.get(new FileIdAndPageNo(fileID, pageNo),
new Callable<CoreObject>() {
public CoreObject call() throws Exception {
// you have access to pageNo and requiredHeight here
}
});
} catch (ExecutionException e) {
e.printStackTrace();
}
return coreObject;
}

关于java - Google Guava - 除了 go KEY 外,还将参数传递给加载方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18522618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com