Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Что лучше static или экземпляр класса!?


Автор: freshAngel 1.8.2009, 16:04
Привет.
Вот я создал класс, который оперирует с фреймом.
Вызываю его стандартным методом:
Код

public static void main(String[] args) { 
JFrame frame = new JFrame();
MyClass classvariable = new MyClass(frame);
}


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

classvariable.method();


Или все - же лучше работать  со статистическими классами, методами и полями!?
Что - бы удобнее было вызывать методы не создавая экземпляр класса.
Код

package mypackage;
classvariable.method();

Автор: duk 1.8.2009, 16:37
Это зависит от того, какая задача решается. Где-то удобно использовать статические методы (есть куча классов-утилит), где-то статические поля как константы. 



Цитата(freshAngel @  1.8.2009,  16:04 Найти цитируемый пост)
Или все - же лучше работать  со статистическими классами, методами и полями!?
Что - бы удобнее было вызывать методы не создавая экземпляр класса.
Выделить всёкод Java
1:
2:
    
package mypackage;
classvariable.method();


Что значит статический класс? Есть внутренние классы которые помечаются как static название статические к ним не совсем подходит.
В примере вы вызываете метод как нестатический.

И вообще опишите конкретнее задачу и что Вам нужно.

Автор: freshAngel 1.8.2009, 16:47
Цитата(duk @ 1.8.2009,  16:37)
И вообще опишите конкретнее задачу и что Вам нужно.

Написал класс, которому в конструктор передается фрейм, далее на этот фрейм вешает лисинер сворачивания в трей ну и еще пара полезных функций.

- Есть внутренние классы которые помечаются как static название статические к ним не совсем подходит.

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

Или как лучше сделать!?

Автор: duk 1.8.2009, 17:22
Цитата(freshAngel @  1.8.2009,  16:47 Найти цитируемый пост)
Как вариант сделать вложенный "статистический" (а что это тогда за класс со static)

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

Что касается статических методов, то я бы их использовал для выполнения простых операций. Передали, к примеру значение какого-то примитивного типа - получили результат. 

Вашу задачу, лично я решил бы без использования статики + Вам будет необходимо изменить код, так как определенный конструктор уже не понадобится (при использовании статических методов). Хотя, тут дело вкуса. Возможно Вам будет удобнее использовать, в данном случае, статические методы. Не знаю. Но самое главное - не стоит этим злоупотреблять.

Автор: freshAngel 2.8.2009, 21:02
Спасибо большое!
Понял!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)