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
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.
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.
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.