temi
Top Contributor
Mir ist natürlich klar, was @Jw456 mit seiner Aussage gemeint hat und er hat damit recht, dass es keine Variablen oder Methoden ohne eine umschließende Klasse in Java gibt. Ich wollte eigentlich nur klarstellen, dass es keine Instanz (= Objekt) der Klasse benötigt, um auf die statischen Member zugreifen zu können und zwar in dem Sinn, dass ein Programmierer eine Instanz der Klasse erzeugt. Das die JVM einen Mechanismus braucht, um damit umzugehen ist richtig, auch wenn ich nicht weiß (oder wissen muss), wie das genau geht.Das stimmt so nicht. Natürlich meinst Du das Richtige, denn für eine Klassenvariable brauchst Du keine Instanz der Klasse.
Aber natürlich brauchst Du "eine" Instanz. Um eine Klasse nutzen zu können, muss der Classloader eine Instanz von Class anlegen für die Klasse. Ohne diese Instanz geht gar nichts (bzw. es kommt eine ClassNotFoundException beim Versuch des Zugriffes).
Daher ist die Kernaussage von @Jw456 aus meiner Sicht nicht falsch:
Wobei dann natürlich die Frage ist: Was genau ist mit Variante, Objekt und gebunden gemeint. Aber wenn man da nicht zu sehr versucht, etwas Falsches da rein zu interpretieren, dann ist das durchaus richtig. Globale Variablen so wie es diese z.B. in C gibt, gibt es in Java Programmen nicht.
Und das hast du @kneitzel, ja auch so zitiert:
Und gemäß 4.3.1: "An object is a class instance or an array. [...] A class instance is explicitly created by a class instance creation expression (§15.9).""If a field is declared static, there exists exactly one incarnation of the field, no matter how many instances (possibly zero) of the class may eventually be created. A static field, sometimes called a class variable, is incarnated when the class is initialized (§12.4).
Insofern hat es sich definitiv um kleinlichen Begrifflichkeits-Fetischismus gehandelt
Aber das soll es jetzt endgültig von meiner Seite zu dem Thema gewesen sein. Evtl. kann ein Admin diesen Teil in einen separaten Thread verschieben.