Typensicherheit bei enums

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Moin,

was versteht ihr unter Typensicherheit im generellen und typensichere Enums im speziellen?
Beste Grüße,
 

didjitalist

Bekanntes Mitglied
typsicherheit bei enums soll garantieren, dass ein bestimmter wert zur laufzeit eines programms niemals seine identität ändern kann. das wird durch drei einfache dinge erreicht:

1. subclassing unterbinden
2. privater konstruktor (erfüllt auch gleich die 1.)
3. statische und einmalige konstruktion aller werte

da es seit java 1.5 enums gibt, muss man sich darüber aber keine gedanken mehr machen. die erfüllen alle diese kriterien von haus aus.
 
S

SlaterB

Gast
was didjitalist beschreibt ist die Unveränderlichkeit, immutability,
ein wichtiges Konzept, besonders für Strings aber auch alle Enums

edit: na doch auch bisschen was anderes, die Abgeschlossenheit der Enum-Werte-Menge

spätes edit: ach, noch falscher von mir, die Enums sind ja in sich gar nicht mal unveränderlich,
wenn es set-Methoden gibt, dann kann man deren interen Zustand ja ändern,
aber eben nicht die Menge der Objekte selber




---------

Typsicherheit bedeutet vor allem, dass der Typ genau festgelegt ist,

vor Enums hatte man statische Variablen:

public static final int JA = 0;
public static final int NEIN = 1;
public static final int VIELLEICHT = 2;
public static final int WEISS_NICHT = 3;
public static final int AUSSAGE_VERWEIGERT = 4;

public static final int ROT = 0;
public static final int GRUEN = 1;
public static final int BLAU = 2;

einer Methode
public void beantworteKritischeFrage(int x) {
}
sollte man nun einen der Werte JA bis AUSSAGE_VERWEIGERT übergeben,
da der Parameter-Typ aber nur ein normaler int ist, kann es auch eine der Farbkonstanten sein oder ein beliebiger int-Wert wie 4597689

wenn man nun eine Enum definiert und der Parameter ein Enum-Typ ist,
kann man nur einen korrekten Enum-Wert oder null übergeben,
Typsicherheit verhindert alle anderen Fehlangaben
 
G

Guest

Gast
musiKk hat gesagt.:
Jetzt werden hier wohl doch Hausaufgaben gemacht?

Ist keine Hausaufgabe, ich lese nur gerade "Effective Java" und ich war mir nicht sicher, ob ich das richtig verstanden habe.
Hausaufgeben würde ich unter dem Begriff "Hausaufgaben" eintragen und ausserdem wärs eine mickrige HA.

Beste Grüße,
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben