-
Notifications
You must be signed in to change notification settings - Fork 2
Tag 09: Git, Enums
Das, was wir uns gerade live angucken nennt man "HEAD". bei IntelliJ auch ersichtlich durch die gelbe Markierung. "main" bezeichnet hierbei die Hauptversion (die immer einwandfrei sein sollte, da diese als Grundlage für die zukünftigen Branches fungiert).

Alle sich auf das Hauptprojekt beziehende Projekte außerhalb des "HEAD", nennen sich Branches (auch Zweige) und können als stellvertretend für die Arbeit der verschiedenen Mitarbeiter betrachtet werden, die ebenfalls an diesem Projekt arbeiten.

Wenn mehrere Branches erstellt worden sind, sollte man gemeinsam überlegen welche Branches man zusammenführen möchte.

Durch Rechtsklick auf das entsprechende Feature lassen sich beide Features/Branches zusammenführen (mergen).

Sind beide Branches erfolgreich gemerged worden, sieht das Ganze so aus:

Sobald man ein neues Feature erstellt hat, kann man dieses auf GitHub über "Pull Requests" mit der Main vergleichen und dies gleichzeitig veröffentlichen.

Wenn man dies erfolgreich geschafft hat, wird dies unter dem Überpunkt "Pull Requests" kurzfristig so angezeigt:

und bei IntelliJ so:

Wenn der Partner, mit dem man an einem Projekt zusammenarbeitet, dein Projekt (aka Review) noch nicht bestätigt (approved) hat, erhält man diese Sicht:

Kommt es zu Konflikten beim Versuch beide Dateien miteinander zu verbinden, öffnet IntelliJ dieses Fenster, welches einem wiederum erlaubt entweder nur die eine Version zu übernehmen oder auch beide zu fusionieren. Des Weiteren kann man im mittigen Fenster die Version auch direkt bearbeiten.

Durch das Kreuz sowie den Pfeil links und rechts, kann man die jeweilige Version direkt übernehmen oder auch ablehnen. Der kleine Zauberstab in der oberen Leiste hat die Funktion leichte Konflikte direkt automatisch zu beheben.


Enums werden verwendet um eine begrenzte Anzahl an Werten festzulegen. Diese Werte sind konstant, also nicht änderbar.
Erstellen von Enums
Um einen Enum zu erstellen wird das enum Keyword verwendet:
public enum EnumName {
// ...
}
Innerhalb der geschweiften Klammern werden die einzelnen Werte definiert. Diese müssen mit einem Komma separiert werden:
public enum EnumName {
VALUE_A,
VALUE_B,
VALUE_C
}
Ein konkreter Wert eines Enums kann wie folgt einer Variablen zugewiesen werden:
EnumName variablenName = EnumName.VALUE_A
Innerhalb des Enums können weitere Variablen angelegt werden. Diese Variable wird jedem Enum-Value als Instanz-Variable zugewiesen.
Jeder Enum-Value hat also 'seinen eigenen Wert'. Es ist darauf zu achten, dass das letzte Enum-Value mit einem Strichpunkt ; abschließt.
Um die Instanz-Variable zu nutzen, muss diese wie folgt angelegt werden:
public enum EnumName {
VALUE_A,
VALUE_B,
VALUE_C;
// Instanz-Variable
private String additionalInfo;
}
Darüber hinaus muss die Instanzvariable über einen Konstruktor initialisiert werden.
Dieser ist per default private. Das private Keyword wird nicht benötigt:
public enum EnumName {
VALUE_A,
VALUE_B,
VALUE_C;
private String additionalInfo;
// Konstruktor
EnumName(String info) {
additionalInfo = info;
}
}
Im letzten Schritt werden dem Enum-Value runde Klammern () hinzugefügt. Innerhalb dieser wird der entsprechende Wert festgelegt:
public enum EnumName {
// Values mit Konstruktoraufruf
VALUE_A("A"),
VALUE_B("B"),
VALUE_C("C");
private String additionalInfo;
EnumName(String info) {
additionalInfo = info;
}
}
Um von außen auf die Instanz-Variable zugreifen zu können muss ein Getter implementiert werden:
public enum EnumName {
VALUE_A("A"),
VALUE_B("B"),
VALUE_C("C");
private String additionalInfo;
EnumName(String info) {
additionalInfo = info;
}
// Getter
public String getAdditionalInfo() {
return additionalInfo;
}
}
Der Zugriff auf die Instanz-Variable wird wie folgt erstellt:
String info = EnumName.VALUE_A.getAdditionalInfo();
Nutzung von Enums am Beispiel einer Getränkebestellung
Angenommen bei einer Getränkebestellung wird die Menge in Milliliter an eine Methode übergeben. Hierbei kann es beim Aufruf zu Fehlern kommen:
Um dies zu verhindern kann ein Enum mit festen Werten definiert werden. Dieser Enum enthält zu den Enum-Values noch die Menge in Millilitern:
Bei der Verwendung kann nun auf den festgelegten Wert "inMl" zurückgegriffen werden. Undefinierte Werte sind nicht möglich:
Auch beim Aufruf der Methode können nur noch die definierten Werte ausgewählt werden:
Weiterführende Links