Может кто-нибудь объяснить разницу между тремя классами Reference (или отправить ссылку на хорошее объяснение)? SoftReference
> WeakReference
> PhantomReference
, но когда я буду использовать их? Почему существует WeakHashMap
, но не SoftHashMap
или PhantomHashMap
?
И если я использую следующий код...
WeakReference<String> ref = new WeakReference<String>("Hello!");
if (ref != null) { // ref can get collected at any time...
System.gc(); // Let assume ref gets collected here.
System.out.println(ref.get()); // Now what?!
}
... что происходит? Должен ли я проверять, является ли ref
значением null перед каждым утверждением (это неправильно, но что мне делать)? Извините за вопросы быстрого огня, но мне трудно понять эти классы Reference
... Спасибо!