对TokenCache类中CacheLoader返回"null"的疑惑
来源:6-4 获取用户登录信息,忘记密码,提示问题与答案,重置密码功能开发

何智B先生
2017-06-04
请问老师,5.4中,不是很明白把CacheLoader中的Load的返回值的null改成字符串"null"的意义,使用null的话,使用null == value?作判断不是一样么,还有就是,使用字符串"null".equals作判断,然后又返回null对象,不是没有意义么,我把代码改成这样,是不是效果一样,谢谢老师。
图片为视频中的代码
下面为我改成的代码
public class TokenCache { private static Logger logger = LoggerFactory.getLogger(TokenCache.class); private static LoadingCache<String,String> localCache = CacheBuilder.newBuilder() .initialCapacity(1000) .maximumSize(10000) .expireAfterAccess(12, TimeUnit.HOURS) .build(new CacheLoader<String, String>() { @Override public String load(String key) throws Exception { return null; } }); public static void setKey(String key,String value){ localCache.put(key,value); } public static String getKey(String key){ try { return localCache.get(key); } catch (Exception e) { logger.error("localCache get error",e); } return null; } }
写回答
1回答
-
hi 同学,我非常理解你的想法,首先给你一个大大的赞~~这块为什么改成这样,是因为
@Override
public String load(String key) throws Exception {
return null;
}
在这个位置,当时编码测试的时候返回null的时候,并且这个key不存在的时候,会报一个guava内部的一个异常,为了避免这种异常。当时改成那样的,你改的是没有问题的,和之前的版本一样,然后同学再自测一下,看看能否通过,再次赞一下这位同学,非常棒棒哒!
012017-06-04
相似问题