舍其小伙伴 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 不管从键盘上输入多少字符或者数组 输出的结果两个字符间间隔一个空格符
  • ¥30 频率分析法分析绘制奈奎斯特图、波特图
  • ¥15 弹出来一万个系统找不到指定的文件框框,怎么解决
  • ¥15 ADS生成的微带线为什么是蓝色空心的
  • ¥15 求一下解题思路,完全不懂
  • ¥15 tensorflow
  • ¥15 densenet网络结构中,特征以cat方式复用后是怎么进行误差回传的
  • ¥15 STM32G471芯片spi设置了8位,总是发送16位
  • ¥15 R语言并行计算beta-NTI中tree文件的类型
  • ¥15 如何解读marsbar导出的ROI数据?