Я использую LinkedHashMap в качестве кеша.Я переопределил removeEldestEntry, чтобы заставить этот кеш иметь фиксированный размер.Старые значения будут удалены.Вот как инициализируется моя карта:
<!-- language: lang-java -->
sBackgroundBitmapCache = new LinkedHashMap<String, Bitmap>(backgroundCacheSize) {
private static final long serialVersionUID = 287204858147490218L;
@Override
protected boolean removeEldestEntry(LinkedHashMap.Entry<String, Bitmap> eldest) {
if (size() > backgroundCacheSize) {
Log.d(TAG, "Removing hash " + eldest.getKey() + " from background cache");
return true;
} else {
return false;
}
}
};
Так что, очевидно, я собираюсь использовать этот кеш, используя метод put.Но я получаю сообщения об ошибках при использовании метода put:
java.lang.NullPointerException
at java.util.LinkedHashMap.postRemove(LinkedHashMap.java:291)
at java.util.HashMap.remove(HashMap.java:637)
at java.util.LinkedHashMap.addNewEntry(LinkedHashMap.java:186)
at java.util.HashMap.put(HashMap.java:411)
Я не смог выяснить, почему при использовании метода put может возникнуть исключение нулевого указателя.Я уверен на 100%, ключ и значение не равны нулю.
Любая помощь будет оценена.
-f4