Вызов статического метода Java - PullRequest
1 голос
/ 21 июля 2011

Вызов статического метода Java (метода фабричного класса) создает объект этого класса?

Я имею в виду, что статический метод возвращает значение, скажем, размер массива (массив является переменной класса)

Я проверил код, но не смог увидеть, что Object этого класса никогда не создавался до вызова статического метода.?

public static boolean isFiveInstance() {
    return _instances.size() == 5;
}

и _instances - это переменная класса

private static ArrayList<LocalMediaPlayer> _instances;

, которая создается и заполняется в конструкторе.

Ответы [ 3 ]

4 голосов
/ 21 июля 2011

Нет, это не так.В этом смысл создания статических методов.Статические методы не используют переменные экземпляра любого объекта класса, в котором они определены, поэтому все, на что вы ссылаетесь внутри статического метода, также должно быть статическим.

Именно поэтому вы вызываете статический метод, такой как Class.StaticMethod()вместо:

new Class().StaticMethod();

new будет создавать экземпляр этого класса, создавая, таким образом, новый экземпляр этого объекта.

3 голосов
/ 21 июля 2011

Нет, static вызовы не создают экземпляры объектов (потому что они не требуют этого).

При первом обращении к классу, включая вызов статического метода, класс загружается. загрузчиком классов.

Вот где в игру вступает статический инициализатор:

static {
     // do something
}

этот блок вызывается всякий раз, когда класс инициализируется (один раз для загрузчика классов)

2 голосов
/ 21 июля 2011

Нет, вызов статического метода не создает экземпляр класса. Вот где статические методы отличаются от методов экземпляра. Им не нужен экземпляр класса, к которому они относятся, для запуска.

...