Статическая переменная экземпляра ссылается на экземпляр класса - PullRequest
4 голосов
/ 09 ноября 2011

Могу ли я позволить статическому полю класса хранить ссылку на сам экземпляр? Если да, то будет ли он сохраняться в jvm, и никто не будет хранить ссылку?

public class StatTest {
    private static StatTest statTest;

    public static StatTest getStatTest () {
        if (statTest== null) {
            statTest= new StatTest ();
            statTest.init();
        }
        return statTest;
    }

    private StatTest() { }
}

Ответы [ 4 ]

7 голосов
/ 09 ноября 2011

Да, это концепция шаблона проектирования Singleton !

2 голосов
/ 09 ноября 2011

Это один из способов создания синглтона класса.

Итак, чтобы ответить на ваш вопрос:

  • Да, это возможно
  • Все ссылки на метод getStatTest() будут возвращать этот экземпляр.

При использовании этого метода для одноэлементного метода этот метод обычно называется getInstance() =)

1 голос
/ 09 ноября 2011

будет ли он сохраняться в jvm, и никто не будет хранить ссылки?

Да, если сам класс не подходит для сборки мусора (что может произойти, только если выиспользовать пользовательский загрузчик классов).

0 голосов
/ 09 ноября 2011

Congrats. Вы заново изобрели синглтон. http://en.wikipedia.org/wiki/Singleton_pattern

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...