Верно ли, что Java неявно определяет ссылки на объекты, используемые в классах?

После прочтения книг, поиска в сети относительно типов ссылок в 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?

Любая помощь была бы для меня большой.

13
задан Naved 25 October 2011 в 04:53
поделиться