我按如下方式初始化PassiveExpiringMap
:
Map<String, Boolean> expiringMap;
expiringMap = new PassiveExpiringMap<>(1000));
现在,稍后我想要获取TTL(这里是1000)。我怎么能这样做呢?我发现有一些名为expirationTime的东西,但无法使用它。
谢谢!
答案 0 :(得分:1)
不,这是不可能的(除非你诉诸某种涉及反思的解决方案)。
创建传递TTL的PassiveExpiringMap
实例后,会创建一个ExpirationPolicy
(ConstantTimeToLiveExpirationPolicy
)将TTL传递给它。 TTL存储在实例变量timeToLiveMillis
中,该变量是私有。
您提到的expirationTime
用于计算对象的到期时间(这只是当前时间,以毫秒为单位+您传递的TTL)。将对象插入地图时计算。
一种方法是创建一个包含PassiveExpiringMap
和TTL的包装器对象,如
class ExpiringMapWithTTL {
private Map<String, Boolean> expiringMap;
private long ttl;
//Builder or Getters, Setter
}