Java's enum ... Wo sind sie entstanden?

8

Da Enum in C # auf dem Stack sind, habe ich mich gefragt, wo Enum in Java erstellt wurde. Auf dem Stapel? Auf dem Haufen? An einem geheimnisvollen anderen Ort?

Die Aufzählung in C # ist primitiver als die in Java, dies könnte erklären, warum sie auf dem Stapel erstellt wurden ...

Wo sind sie? Ich kann sie nicht finden!

Danke

    
ALOToverflow 07.09.2010, 16:20
quelle

4 Antworten

9

Enums in Java sind auch Objekte: Enums können zum Beispiel Instanzvariablen / Methoden / Konstruktoren haben und Schnittstellen implementieren. All dies lässt mich denken, dass sie genau wie andere Objekte von jvm gehandhabt werden.

    
Nikita Rybak 07.09.2010, 16:22
quelle
6

Da Java java.lang.Enum umfasst, werden sie auf dem Heap erstellt alle anderen Java-Objekte.

    
duffymo 07.09.2010 16:25
quelle
2

Sie sind Objekte, genau wie jedes andere Objekt, also ist das Enum selbst auf dem Haufen. Eine Variable, die einen Verweis auf eine Enumeration enthält, befindet sich möglicherweise auf dem Stapel, wenn sie eine Funktionsvariable ist, oder sie befindet sich möglicherweise auf dem Heap innerhalb eines anderen Objekts, wenn es ein Mitglied eines Objekts ist.

    
Jay 07.09.2010 17:11
quelle
2

Enums sind Objekte in Java, also befinden sie sich auf dem Heap. Für jeden Typ gibt es jedoch nur eine feste Anzahl von ihnen. Client-Code behandelt Referenzen zu diesen Enumerationsobjekten, sodass auf dem Heap tatsächlich nichts erstellt wird. Wie immer unter dem Gesichtspunkt der Spezifikation: lokale Variablenreferenzen sind auf dem Stapel; Objektfeldreferenzen befinden sich auf dem Heap.

    
Tom Hawtin - tackline 07.09.2010 16:44
quelle

Tags und Links