Может кто-нибудь объяснить разницу между тремя классами 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... Спасибо!