После прочтения книг, поиска в сети относительно типов ссылок в Java, я все еще сомневаюсь (или, возможно, неверно истолковал концепцию).
Было бы здорово, если бы кто-нибудь развеял мои сомнения.
Позвольте мне привести пример класса, содержащего переменные класса, переменные экземпляра и локальные переменные.
public class Test {
public static ArrayList<String> listCommon = new ArrayList<String>();
private HashMap<String, String> mapInstance;
public Test() {
mapInstance = new HashMap<String, String>();
}
public void doSomething(String key) {
ArrayList<String> local = new ArrayList<String>();
if(key != null){
local.add(mapInstance.get(key));
}
System.out.println("Value is added in instance Map: ", mapInstance.get(key));
}
}
Мой вопрос:
1. являются listCommon
(статическая переменная) и mapInstance
(переменная экземпляра) Сильная ссылка на сборщик мусора?
2. Является ли переменная локальной
(определенной и используемой в методе) слабой ссылкой?
3. Как фантомный эталон и мягкий эталон появились на картинке?
4. ИЛИ выше 3 концепции недействительны; означает, что Java определяет ссылки только в том случае, если вы явно использовали тип, определенный в пакете java.lang.ref?
Любая помощь была бы для меня большой.