Задание сделал сам (в кой то веки), однако - чистейшего понимания, что происходит - нет.
public AnyObject put(Long key, AnyObject value) {
try { if (cacheMap.containsKey(key)) {
AnyObject m = cacheMap.get(key).get();
SoftReference<AnyObject> softReference = cacheMap.put(key, new SoftReference<>(value));
softReference.clear();
return m;
}} catch (NullPointerException m) {
SoftReference<AnyObject> softReference = cacheMap.put(key, new SoftReference<>(value));
softReference.clear();
return null;}
return null;}
В мэине мы запихиваем в мапу
private Map<Long, SoftReference<AnyObject>> cacheMap = new ConcurrentHashMap<>();
много объектов.
Где ключ - это цифра, а значение софтовая ссылка на наш объект
SoftReference<AnyObject> softReference = cacheMap.put(key, new SoftReference<>(value));
Зачем нам в данном случае нужен softReference ? Могли бы просто запихать в мапу и все.
Или же это с целью демонстрации ?
Поясните, пожалуйста.