подскажите, если clazz.newInstance() не добавляет новый экземпляр,то как правильно?
или тут проверка на наличие в кеше по ключю не верная?
package com.javarush.task.task34.task3408;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Map;
import java.util.WeakHashMap;
public class Cache<K, V> {
private Map<K, V> cache = new WeakHashMap<>(); //TODO add your code here
public V getByKey(K key, Class<V> clazz) throws Exception {
//TODO add your code here
if(cache.get(key)==null) {
cache.put(key, clazz.newInstance());
}
return cache.get(key);
}
public boolean put(V obj) {
//TODO add your code here
try {
Method m = obj.getClass().getDeclaredMethod("getKey", null);
m.setAccessible(true);
K key = (K) m.invoke(obj);
cache.put(key, obj);
}catch (Exception e) {
return false;
}
return true;
}
public int size() {
return cache.size();
}
}
