对TokenCache类中CacheLoader返回"null"的疑惑

来源:6-4 获取用户登录信息,忘记密码,提示问题与答案,重置密码功能开发

何智B先生

2017-06-04

请问老师,5.4中,不是很明白把CacheLoader中的Load的返回值的null改成字符串"null"的意义,使用null的话,使用null == value?作判断不是一样么,还有就是,使用字符串"null".equals作判断,然后又返回null对象,不是没有意义么,我把代码改成这样,是不是效果一样,谢谢老师。

图片为视频中的代码

http://szimg.mukewang.com/5932fe400001384906890411.jpg

下面为我改成的代码

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回答

Geely

2017-06-04

hi 同学,我非常理解你的想法,首先给你一个大大的赞~~这块为什么改成这样,是因为

@Override

                public String load(String key) throws Exception {

                    return null;

                }


在这个位置,当时编码测试的时候返回null的时候,并且这个key不存在的时候,会报一个guava内部的一个异常,为了避免这种异常。当时改成那样的,你改的是没有问题的,和之前的版本一样,然后同学再自测一下,看看能否通过,再次赞一下这位同学,非常棒棒哒!

0
1
何智B先生
非常感谢!
2017-06-04
共1条回复

从0开始 独立完成企业级Java电商网站服务端开发

前后端分离,数据库接口设计,架构设计,功能开发,上线运维

9486 学习 · 8814 问题

查看课程