static-Block in Klassen

Status
Nicht offen für weitere Antworten.

conan2

Aktives Mitglied
Ich hab in einem Codeschnipsel mal in einer Klasse einen Block vorgefunden, der nur mit static betitelt war, ungefähr so:
Code:
class MyClass {
    static {
        // Anweisungen
    }

    // Rest
}

Verhält es sich damit vielleicht so dass dieser Block dann aufgerufen wird wenn die Klasse das erste Mal instanziert wird?
Ich wollte sie dafür benutzen, für alle Instanzen dieser Art BufferedImages zu laden, ohne dass sie jedes Mal bei einer Instanzierung neu geladen werden müssen. Ist die Verwendung des static-Blockes in diesem Fall richtig oder bewirkt er was anderes?
 
S

SlaterB

Gast
> Verhält es sich damit vielleicht so dass dieser Block dann aufgerufen wird wenn die Klasse das erste Mal instanziert wird?
exakt,
damit ist eigentlich alles geklärt,

> für alle Instanzen dieser Art BufferedImages zu laden,

klingt etwas verwirrend,
wenn du die Bilder in einer statischen Variable speicherst,
dann sind sie für alle verfügbar, das kann man sich da denken,

mit der Erstellung mehrerer Instanzen hat das dann ja offensichtlich nichts direkt zu tun
 

Murray

Top Contributor
SlaterB hat gesagt.:
> Verhält es sich damit vielleicht so dass dieser Block dann aufgerufen wird wenn die Klasse das erste Mal instanziert wird?
exakt,
damit ist eigentlich alles geklärt,


Nicht ganz: dieser Block (die sog. statische Initialisierung der Klasse) wird durchlaufen, bevor das erste Objekt der Klasse instanziiert worden ist und bevor die erste statische Methode dieser Klasse aufgerufen wird (in diesem Fall muss ja noch nicht unbedingt ein Objekt instanziiert worden sein).
 
S

SlaterB

Gast
stimmt, ich hatte wohl nach 'das erste Mal' aufgehört weiterzulesen ;)
bei statisch kann ja nur ein beliebiger Kontakt mit der Klasse gemeint sein
 

marble

Mitglied
kein "erster kontakt"... das wird einfach geladen.. immer ohne berühren oder sonstwas... static wird beim starten des programms geladen und ist immer da... deswegen static.
 

Wildcard

Top Contributor
falsch. static wird erst ausgeführt wenn die Klasse geladen wird (das wird sie, wenn sie das erste mal benutzt wird), denn vorher gibt es noch keine Klasse
 

Murray

Top Contributor
Soweit ich mich erinnere, lässt die Spezifikation da etwas Luft: die Initialisierung passiert irgendwann zwischen dem Laden der Klasse und der ersten Verwendung, also nicht notwendigerweise sofort beim Laden der Klasse (wobei normalerweise die VM eine Klasse ja nur deshalb lädt, weil die Klasse gerade verwendet werden soll; daher wird die Initialisierung direkt nach dem Laden passieren). Grundsätzlich könnte eine VM aber auch Klassen vorladen, ohne dass sie sofort verwendet werden; dann könnte die Initialisierung auch später passieren.

Das sind aber - wenn man nicht gerade VMs oder zumindest ClassLoader implementiert - eher akademische Problem; für den "Hausgebrauch" reicht es zu wissen, dass dieser Block a) genau einmal und b) vor der ersten Verwendung der Klasse durchlaufen wird.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Annotation einer Subklasse im static-Block auslesen. Allgemeine Java-Themen 6
G URLClassLoader stößt static Block nicht an Allgemeine Java-Themen 8
E Methoden abstract static Methode Allgemeine Java-Themen 8
N nicht static und auch nicht new Allgemeine Java-Themen 3
P static Blocks und variablen Allgemeine Java-Themen 41
Kirby.exe Cannot make a static reference to the non-static field rimWidth Allgemeine Java-Themen 12
Thallius Ist meine static Helper Class Thread save? Allgemeine Java-Themen 9
S static in Interface und Klasse Allgemeine Java-Themen 2
S static methode im Interface Allgemeine Java-Themen 1
A Variablen non-static variable cannot be referenced from a static content Allgemeine Java-Themen 4
P Static Variable -> unterschiedliche Werte? Allgemeine Java-Themen 1
K Static Variablen verbieten Allgemeine Java-Themen 10
C Generic collections und static typing Allgemeine Java-Themen 4
M Warum nicht static ? Allgemeine Java-Themen 10
M Eine static-Methode verlassen Allgemeine Java-Themen 2
B Schlüsselworte [ERLEDIGT] static { } - Was ist das und wofür kann ich das brauchen? Allgemeine Java-Themen 1
J private static final String variable Allgemeine Java-Themen 8
L Non-static-Variables in Enumerationen Allgemeine Java-Themen 2
L OOP Klassen-Design (static oder nicht?) Allgemeine Java-Themen 3
T Enumeration/Static Final/Bitfield Allgemeine Java-Themen 6
T Static kann nicht verändert werden Allgemeine Java-Themen 3
W Threads Cannot make a static reference.. Allgemeine Java-Themen 13
H Programierstil: static - Zugriff vs. Staticzugriff Allgemeine Java-Themen 24
N Static oder andere Lösung Allgemeine Java-Themen 5
N Vererbung Static & private fields - Nicht ganz einfach? Allgemeine Java-Themen 4
M Wo hin mit static factory methods? Allgemeine Java-Themen 40
M Public Static importRunning -> Bad Design oder ok ? Allgemeine Java-Themen 5
S Cannot make a static reference to the non-static field MySecondClass.Points Allgemeine Java-Themen 3
M Methoden Static Methoden und Thread??? Allgemeine Java-Themen 4
S auf public void Methode zugreifen ohne static Allgemeine Java-Themen 11
K Static - Problem Allgemeine Java-Themen 10
M Variablen Variablenzugriff aus static void Allgemeine Java-Themen 21
D API - Beispiel + static member in inner (non static) class Allgemeine Java-Themen 2
S static methoden Allgemeine Java-Themen 9
S Performance Frage: Objekt oder static? Allgemeine Java-Themen 33
X HTTP Problem mit static/non static JTextArea Update Allgemeine Java-Themen 17
woezelmann referenz der outer class aus static nested class heraus Allgemeine Java-Themen 7
B static Variable / Unterklasse Allgemeine Java-Themen 2
I Was macht static { ... } ? Allgemeine Java-Themen 8
G static inner Klassen Allgemeine Java-Themen 7
G static und dynamic linking? Allgemeine Java-Themen 32
J in einer static Variable Wert ändern Allgemeine Java-Themen 6
J Verständnisfrage - nested static classes Allgemeine Java-Themen 11
G static- Methoden überschreiben Allgemeine Java-Themen 10
E Geschwindigkeit static Allgemeine Java-Themen 6
V Static oder wie? Allgemeine Java-Themen 61
I reflection get inner static classes Allgemeine Java-Themen 2
L static main - Spezifikation? Allgemeine Java-Themen 7
D static Allgemeine Java-Themen 46
P static-Methode aus dem Konstruktor aufrufen Allgemeine Java-Themen 6
oliver1974 "(.) should be accessed in a static way" Falsche W Allgemeine Java-Themen 6
P static Klassenvariable Allgemeine Java-Themen 15
B JPasswordField klassenübergreifend auslesen->static Probl Allgemeine Java-Themen 4
F Methoden: static vs. instance Allgemeine Java-Themen 24
MQue static Methoden/Klassen Allgemeine Java-Themen 7
K Warum static-Methoden nutzen Allgemeine Java-Themen 26
G Java-Befehle Native und Static Allgemeine Java-Themen 2
M JNI, static.a mit load.Library laden? Allgemeine Java-Themen 2
K Static Members von Superklasse für JEDEN Erben Allgemeine Java-Themen 6
padde479 The static method sleep(long) from the type Thread should. Allgemeine Java-Themen 2
M static-Methode vorschreiben Allgemeine Java-Themen 5
S singleton vs. static Allgemeine Java-Themen 7
G Object mit static Feldern speichern Allgemeine Java-Themen 9
J Warum heißt es eig. "public static void main" ? Allgemeine Java-Themen 4
conan2 "Cannot make a static reference to the non-static field Allgemeine Java-Themen 8
P Singleton vs static Allgemeine Java-Themen 19
J parameterized und static fields Allgemeine Java-Themen 4
A Static reference to non-static field Allgemeine Java-Themen 10
S static umgehen Allgemeine Java-Themen 5
G static oder nicht Allgemeine Java-Themen 4
J Problem mit static/non-static Allgemeine Java-Themen 2
G getAppletContext() in static Methode Allgemeine Java-Themen 3
m@nu Programm-Models in Static-Objekten speichern Allgemeine Java-Themen 5
J Nicht-static variable in static variable kopieren - wie? Allgemeine Java-Themen 14
O does not declare a static final serialVersionUID field of . Allgemeine Java-Themen 6
G static vor einem array Allgemeine Java-Themen 2
K Überschreiben von 'static'-Methoden hat anderes Verhalten? Allgemeine Java-Themen 2
A JSP & static-Variablen Allgemeine Java-Themen 3
B Static Import: Syntaxfrage Allgemeine Java-Themen 2
S Static + Speicher + Bytecode etc. Brauche HILFE :/ Allgemeine Java-Themen 11
Z auf static Methode aus anderen Package zugreifen? Allgemeine Java-Themen 7
N this im public static void Allgemeine Java-Themen 3
C Communication zwischen zwei Projekte - static objects Allgemeine Java-Themen 4
S static mit abstract und in interface Allgemeine Java-Themen 10
X Input/Output InputStream/Scanner(System.in) read()/hasNextLine() block unterbrechen Allgemeine Java-Themen 7
Neumi5694 Lambda - Block vs "Anweisungsliste" Allgemeine Java-Themen 8
I Java Optionals mit return-Block Allgemeine Java-Themen 2
C try-catch Block Verständnisfrage Allgemeine Java-Themen 14
B Sudoku-Block-Prüfung Allgemeine Java-Themen 1
P Threads Objekt im Konstruktor anders wie im Run()-Block Allgemeine Java-Themen 10
C Unendlich Wiederholungsfehler bei try catch - Block Allgemeine Java-Themen 3
T Warum ein privileg block? Allgemeine Java-Themen 0
H Probleme mit finally-Block und close() Allgemeine Java-Themen 4
N String aus Try/Catch-Block übernehen Allgemeine Java-Themen 14
B Execption auf Oberfläche werfen, try-catch-Block Allgemeine Java-Themen 6
G Initialization Block? Allgemeine Java-Themen 8
E JNA:Zugriff auf Common-Block von Fortran bzw. Struct in C Allgemeine Java-Themen 2
J synchronized block mit this und wait() Allgemeine Java-Themen 5
D break block by label Allgemeine Java-Themen 14
M Konstruktor / statischer Block Allgemeine Java-Themen 13

Ähnliche Java Themen

Neue Themen


Oben