舍其小伙伴 2021-05-28 16:49 采纳率: 50%
浏览 18

J2Cache源码中CacheChannel的get为什么要传入可变参数不传入单个boolean值

 // 这里传参传入的是cacheNullObject数组
public CacheObject get(String region, String key, boolean...cacheNullObject)  {
		this.assertNotClose();
		CacheObject obj = new CacheObject(region, key, CacheObject.LEVEL_1);
		obj.setValue(holder.getLevel1Cache(region).get(key));
		if(obj.rawValue() != null)
			return obj;
		String lock_key = key + '%' + region;
		synchronized (_g_keyLocks.computeIfAbsent(lock_key, v -> new Object())) {
			obj.setValue(holder.getLevel1Cache(region).get(key));
			if(obj.rawValue() != null)
				return obj;
			try {
				obj.setLevel(CacheObject.LEVEL_2);
				obj.setValue(holder.getLevel2Cache(region).get(key));
				if (obj.rawValue() != null) {
					holder.getLevel1Cache(region).put(key, obj.rawValue());
				}else {
                                        // 这里通过判断缓存空对象为什么要判数组
					boolean cacheNull = (cacheNullObject.length > 0) ? cacheNullObject[0] : defaultCacheNullObject;
					if (cacheNull)
						set(region, key, newNullObject(), true);
				}
			} finally {
				_g_keyLocks.remove(lock_key);
			}
		}
		return obj;
	}

为什么要传入可变参数呢,有什么特别的用意吗

  • 写回答

1条回答 默认 最新

  • 久绊A 全栈领域新星创作者 2023-02-12 17:48
    关注

    J2Cache的CacheChannel的get方法传入可变参数,是为了支持更多的参数,比如可以传入多个boolean值,以支持更多的缓存操作,比如设置缓存的过期时间等。

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题