vorteil/nachteil static

Status
Nicht offen für weitere Antworten.

scrubs

Mitglied
Hallo leute,

also, was ist eigentlich der vor/nachteil von statischen variablen und methoden?
ist es nicht einfacher wenn alles statisch sind..dann muss man ja in der aufrufenden klasse keine neuen Instanzen (objekte) mehr anlegen.. der aufruf erfolgt mit klassenname.methode1....

hmmm sorry ist wirklich ne anfänger frage..=)
 
B

Beni

Gast
Meine 2 Cents:

Vorteil:
- man hat von überall Zugriff auf statische Elemente
Das kann das Leben wirklich einfacher machen. Besonders wenn man irgendwelche kleinen Hilfs-Methoden benötigt (Math.max...).

Nachteil:
- man hat von überall Zugriff auf statische Elemente
Das kann der Modularität entgegenlaufen. Wenn von überall her zufällig Aufrufe kommen, kann man das statische Element später schlecht ändern/auswechseln/verbessern/löschen/...

- Man ist limitiert auf ein Objekt
Statisch meint meistens "Singleton". Und dann ist die Frage, wann ein Singleton angemessen ist. Da die wenigsten Menschen in die Zukunft schauen können, sollte man eher den sicheren Weg wählen. Und der lautet: vielleicht wird man ein Objekt mehrmals benötigen, und setzt lieber kein Singleton ein.
 

0x7F800000

Top Contributor
scrubs hat gesagt.:
dann muss man ja in der aufrufenden klasse keine neuen Instanzen (objekte) mehr anlegen..
...womit man OOP aufgibt und nur noch prozedural programmiert...
wer es sich antun möchte: bitte schön. Dann macht es aber nicht allzuviel sinn Java zu benutzen, dann wär C sicherlich angebrachter
 
S

SlaterB

Gast
Quark, wenn man etwas mit statischen Operationen gepflegt lösen kann, wie Math.max(), dann spricht nix dagegen und ein Objekt wäre nur unnötiger Ballast

Objekte kommen nur aus zwei Gründen ins Spiel:
1. Daten vorhalten
personObjekt.getName() ist sinniger als AnyClass.getNameOf(Person-Record) früher
(edit: mehrfache Daten)

2. Polymorphie, Austauschbarkeit
 

0x7F800000

Top Contributor
SlaterB hat gesagt.:
Quark, wenn man etwas mit statischen Operationen gepflegt lösen kann, wie Math.max(), dann spricht nix dagegen und ein Objekt wäre nur unnötiger Ballast
sry für meine schwachen deutschkenntnisse, aber "Quark" hört sich in diesem Kontext so an, als wolltest du irgendeiner vorangegangenen Aussage widersprechen ???:L aber Beni hats doch auch als Vorteil beschrieben :bahnhof: :
Beni hat gesagt.:
Vorteil:
- man hat von überall Zugriff auf statische Elemente
Das kann das Leben wirklich einfacher machen. Besonders wenn man irgendwelche kleinen Hilfs-Methoden benötigt (Math.max...).

wobei ich überhaupt nicht nachvollziehen kann warum hier überhaupt von "Vorteilen und Nachteilen" gesprochen wird... als ob ihr am Beispiel "Wasser vs. Luft für Homo Sapiens Sapiens" über Vorteile und Nachteile diskutieren würdet. Es sind zwei paar schuhe, und ohne beides ist geht es halt nun mal nicht...
 
S

SlaterB

Gast
ich meinte:
du sagst 'static allgemein ist nicht OOP [und damit schlecht]'
darauf ich 'nene, OOP ist kein Sebstzweck, static ist ok für Math.max'
 

0x7F800000

Top Contributor
ne, das hab ich keineswegs gesagt. :bae: du hast einfach einen teil der aussage durchgelesen, ohne das schlüsselwort "alle" davor zu berücksichtigen, ich habs nämlich so gemeint:
Code:
alles statisch => keine OOP
denn die diskussion fing ja damit an:
ist es nicht einfacher wenn alles statisch sind..dann muss man ja in der aufrufenden klasse keine neuen Instanzen (objekte) mehr anlegen..
du hast es dagegen wie
Code:
irgendetwas statisch => keine OOP
interpretiert, das ist in der tat quark ;)
 
B

Beni

Gast
Dann sag mir mal die Hauptanwendung von "static" (abgesehen von kleinen Konstanten) :wink:
 

scrubs

Mitglied
haha was hab ich da gemacht..

naja worauf ich auf meine frage hinaus will ist..z.B ich hab eine Klasse die Daten aus der DB holt. die Daten werden in ArrayList reingeschrieben. z.B ArrayList KundenID und ArrayList KundenName...
so ist es jetzt besser diese ArrayListe statisch zu setzen oder nicht..
somit kann ich in jeder klasse auf die Listen zugreifen ohne eine Instanz anzulegen... ist das so üblich? oder wählt man eher den anderen weg wo ich sag, ja es muss immer ein Objekt angelegt werden bevor "du" meine Daten kriegst...
 

ms

Top Contributor
Ein statisches Feld welches nicht final ist ist noch lange kein Singleton.

Bsp:
Bevor es enums gab wurde zB mit static häufig enums nachgebildet, welche letztendlich seit Java 1.5 genauso funktionieren wie ihre Vorfahren.

Code:
class Animal {
    public static final Animal HORSE = new Animal("HORSE");
    public static final Animal DOG = new Animal("DOG");

    private String type = null;

    private Animal(String s) {
        this.type = s;
    }

    public String toString() {
        return type;
    }
}

@scrubs
Sowas wird üblicherweise nicht static gemacht.
Könnte ja sein, dass deine Anwendung plötzlich mehrbenutzerfähig oder sogar mit mehreren Threads zurechtkommen soll. Spätestens dann funktioniert dein Ansatz nicht mehr.

ms
 
S

SlaterB

Gast
ein x-beliebiges Feld in einem Singleton-Objekt ist selber auch noch kein Singleton ;)

die ganze Klasse Animal ist eine Art Singleton, eine einmalige Ansammlung von Informationen,

okok, streng nach Lehrbuch gibts bestimmte Kriterien, die nicht erfüllt sind, geschenkt,
dem Zweck/ der Anwendung nach ist eine statische Informationsansammlung aber ein Singleton
 

chilla

Mitglied
naja, ein singleton ist ja trotzdem ein Objekt mit Objektvariablen... welches man referenzieren kann, übergeben, zurückgeben etc. außerdem kann ein singleton im viel größeren sinn mit vererbung arbeiten... ein singleton-thread oder sowas ;)

während eine klasse mit statischen methoden und statischen variablen mehr sowas wie ein global-player ist, der von überall ansprechbar ist und immer nur klassenvariablen zur verfügung hat.

außerdem wird ein singleton und dessen referenzvariablen immer erst beim aufrug erstellt wohinggegen klassenvariablen schon bei programmstart instanziert werden.(hoff ich irr mich jetz nicht *g*)

das ist doch ein unterschied...


ps: sry, aber wollt auch mal bissl plappern ;)
 

0x7F800000

Top Contributor
scrubs hat gesagt.:
naja worauf ich auf meine frage hinaus will ist..z.B ich hab eine Klasse die Daten aus der DB holt. die Daten werden in ArrayList reingeschrieben. z.B ArrayList KundenID und ArrayList KundenName...
so ist es jetzt besser diese ArrayListe statisch zu setzen oder nicht..

wenn du dir absolut sicher bist, dass du niemals zwei gleichartige instanzen dieser klasse erzeugen willst, die auf verschiedene datenbanken zugreifen, wäre so eine statische liste eigentlich vertretbar... :roll:

singletons brauchst du, wenn du eine konkrete instanz eines objektes brauchst, aber 100% sicher sein willst, dass es nur ein einziges mal erzeugt wird. Wenn dich deine klasse mit den ganzen datenbankverbindungen als ein instanziiertes objekt an sich nirgendwo interessiert, brauchst du das imho nicht...

ps: jo, ich plappere hier auch nur so ein bisschen rum, vielleicht ist es für den op beruhigend zu wissen, dass der nicht der einzige ist, der keine ahnung hat :D
 

scrubs

Mitglied
hallo leute,

noch eine frage zu static...
bin jetzt irgendwie durchs programmieren, draufgekommen, dass wenn eine statische methode aufgerufen wird, den standard konstruktor und die variablen von der klasse auch mit aufgerufen werden...
kann das stimmen?
 
B

Beni

Gast
Nein, das kann nicht stimmen. Der Konstruktor von welchem Objekt soll denn aufgerufen werden, die statische Methode gehört ja zu keinem... Du erzeugst dir allenfalls aus Versehen irgendwo ein neues Objekt :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Primitiver Datentyp Short , Vorteil/Nachteil Betrachtung Java Basics - Anfänger-Themen 6
D was ist der vorteil vom Builder-design pattern? Java Basics - Anfänger-Themen 11
K Priority Queue - wo ist denn jetzt der Vorteil? Java Basics - Anfänger-Themen 7
B Vorteil von Graphic2D und BufferedImage? Java Basics - Anfänger-Themen 6
K OOP Nachteil bei direktem Aufruf von run() auf Thread-Objekten Java Basics - Anfänger-Themen 2
D Nachteil von static Java Basics - Anfänger-Themen 1
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
A Instance methods should not write to "static" fields Java Basics - Anfänger-Themen 4
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
viktor1 Methoden Methode schreiben static void readText (String filename) {...} zu WordHistogramSample.java Java Basics - Anfänger-Themen 13
M static ArrayList in non-static Java Basics - Anfänger-Themen 12
B Static vs non static und Probleme daraus Java Basics - Anfänger-Themen 13
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9
R UML-Bild (Erkennung ob static o. nicht) Java Basics - Anfänger-Themen 18
R Schulaufgabe, Bruache Hilfe mit non-static Methoden Java Basics - Anfänger-Themen 2
B Static Attribute in einer Klasse, wie geht das? :O Java Basics - Anfänger-Themen 19
NaZuRe Geld(Wert) von der public static void main in die public static void Blackjack Java Basics - Anfänger-Themen 2
H Static Java Basics - Anfänger-Themen 5
K Ausgaben auf der Konsole (static Varible) Java Basics - Anfänger-Themen 9
S public static boolean Java Basics - Anfänger-Themen 4
Vamecruft Compiler-Fehler public static void zu static String ändern Java Basics - Anfänger-Themen 2
L non-static Fehler Java Basics - Anfänger-Themen 16
S Klassenmethode ohne static Java Basics - Anfänger-Themen 2
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
J Fehlermeldung unklar. non-static variable player0 cannot be referenced from a static context Java Basics - Anfänger-Themen 4
D Methoden Scannervariablen in static Methoden Java Basics - Anfänger-Themen 5
P non-static variable cannot be referenced from a static context Java Basics - Anfänger-Themen 6
V the static method should be accessed is a static way Java Basics - Anfänger-Themen 6
NormanPatrickBenner static non-static Java Basics - Anfänger-Themen 82
N Erste Schritte "non-static method" oder "XYZ can not be resolved" Java Basics - Anfänger-Themen 21
B Email versenden, muss Methode static sein? Java Basics - Anfänger-Themen 7
R static in der Methode Java Basics - Anfänger-Themen 2
E Problem mit static Methode Java Basics - Anfänger-Themen 4
H Vererbung Static Scanner Objekt verwenden - von StdIn in einer importierten Klasse lesen Java Basics - Anfänger-Themen 10
M Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 10
I Abstrakte Klasse - static Attribute deklarieren Java Basics - Anfänger-Themen 14
C Methoden Unterschied zwichen public int, public static int und public static void Java Basics - Anfänger-Themen 2
J Frage zu: public static void main (String[]args) Java Basics - Anfänger-Themen 1
T Datentypen enum static Chaos (blutiger anfänger) Java Basics - Anfänger-Themen 5
D Das leidige Thema static.... Java Basics - Anfänger-Themen 15
Aprendiendo Interpreter-Fehler "non-static variable this cannot be referenced from a static context" Java Basics - Anfänger-Themen 2
T Problem mit static Java Basics - Anfänger-Themen 6
T static String Variable wird nur beim ersten aufruf durch eine Funktion geändert. Java Basics - Anfänger-Themen 16
S Vererbung Zugriff auf Methode funktioniert nicht (static/non-static) Java Basics - Anfänger-Themen 3
snipesss Was kann 'static'? Java Basics - Anfänger-Themen 4
H Variablen error: non-static variable cannot be referenced from a static context Java Basics - Anfänger-Themen 4
M public static int in ActionListener Java Basics - Anfänger-Themen 6
J static verschachtelte Klassen und innere Klassen Java Basics - Anfänger-Themen 1
H Nicht Static Funktion ohne Objekt aufrufen? Java Basics - Anfänger-Themen 6
E Objekte und static Java Basics - Anfänger-Themen 2
K Methoden Methoden in Methoden -> static oder nicht? Java Basics - Anfänger-Themen 7
D Erklärung static boolean Java Basics - Anfänger-Themen 6
L Was genau macht "public static void" ? Java Basics - Anfänger-Themen 12
U Erste Schritte cannot be referenced from a static context Java Basics - Anfänger-Themen 1
B ja ja schon wieder einer mit einer public static void main(string[] args) Frage... Java Basics - Anfänger-Themen 8
J Java: static bei Vererbung Java Basics - Anfänger-Themen 5
O Zu viel static im Projekt Java Basics - Anfänger-Themen 9
F Static final Klasse Java Basics - Anfänger-Themen 0
N static und Objekt kombiniert?!? Java Basics - Anfänger-Themen 3
O Wann nutzt man static? Java Basics - Anfänger-Themen 19
B Klassen Eigene "non static" Klasse in Main verwenden! Java Basics - Anfänger-Themen 12
D neue public static class variablen in array speichern? Java Basics - Anfänger-Themen 6
A Static variablen --- Anwendungsbereich Java Basics - Anfänger-Themen 11
B Erste Schritte Wie komme ich aus Static raus?!! Java Basics - Anfänger-Themen 4
V Static Methods Java Basics - Anfänger-Themen 5
W Compiler-Fehler "non-static method cannot be referenced"-Problem Java Basics - Anfänger-Themen 6
S OOP Klasse mit static-Eigenschaften - HashMap füllen Java Basics - Anfänger-Themen 6
3 OOP static class in einer Klasse Java Basics - Anfänger-Themen 6
B static individuell "vererben"? Java Basics - Anfänger-Themen 8
B Erkennen, wann static oder nicht? Java Basics - Anfänger-Themen 7
T Static Fehler Java Basics - Anfänger-Themen 1
R public static void Rückgabe Java Basics - Anfänger-Themen 5
P Compiler-Fehler public static void main, Grundloses Problem Java Basics - Anfänger-Themen 4
A Cannot make a static reference to the non-static field Java Basics - Anfänger-Themen 6
W Variablen Automatisch static? Java Basics - Anfänger-Themen 3
O Warum muss ich static? Java Basics - Anfänger-Themen 6
O Static Java Basics - Anfänger-Themen 15
E non-static method und static context Java Basics - Anfänger-Themen 15
B non static interface Methode Java Basics - Anfänger-Themen 16
J KeyListener,MouseListener,MouseMotionListener und static Java Basics - Anfänger-Themen 7
S Static void Methode Java Basics - Anfänger-Themen 12
Q Unterschied zwischen static und keinem Modifier Java Basics - Anfänger-Themen 15
O Main-Methode static modifier umgehen Java Basics - Anfänger-Themen 10
J Variablen non-static variable Java Basics - Anfänger-Themen 2
P Erste Schritte public oder static oder wie? Java Basics - Anfänger-Themen 7
J static - Methoden Java Basics - Anfänger-Themen 22
X Erste Schritte Methode ohne Static Java Basics - Anfänger-Themen 4
B Classpath static block - Verwirrung Java Basics - Anfänger-Themen 2
S Methoden Warum ist sleep static? Java Basics - Anfänger-Themen 9
K static, non-static Krise Java Basics - Anfänger-Themen 4
R Schlüsselworte static Methoden und Imports Java Basics - Anfänger-Themen 10
M Methoden "Non-static method xy cannot be referenced from a static context" Java Basics - Anfänger-Themen 20
J Probleme mit static generische Klasse Java Basics - Anfänger-Themen 6
S Aufruf Einer Methode aus einer anderen Klasse - Static Fehler Java Basics - Anfänger-Themen 4
W Methodenaufruf innerhalb einer Klasse - static vs. this Java Basics - Anfänger-Themen 3
K Objekt erstellen - error: non-static variable this cannot be referenced from a static context Java Basics - Anfänger-Themen 17
H non-static method cannot be referenced from a static context Java Basics - Anfänger-Themen 2
Y Gebrauch von static Java Basics - Anfänger-Themen 29
L Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 6
T getClass() im static Kontext Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben