Final
| 🚧 | Diese Seite befindet sich in Bearbeitung | 🚧 |
| 🤓 | Diese Seite ist eine Bewertungsrichtlinie, die ab Blatt 2 annotiert und ab Blatt 3 abgezogen wird. | 🤓 |
Beschreibung
Wir wollen in unserem Programm dafür sorgen, dass wir entscheiden können, welche Elemente verändert werden dürfen und welche möglichst nicht verändert werden sollten. Dafür gibt es das Schlüsselwort final. Die korrekte Verwendung davon ist wichtig und entsprechend gibt es auch folgende Regeln die beachtet werden sollten:
- Attribute sollten soweit wie möglich final sein
- final ist nur für das jeweilig referenzierte Objekt gültig (Bsp. können Collections wie List final sein, ihr Inhalt kann aber trotz final verändert werden. Siehe dazu auch: Getter / Setter für Listen)
- Der Zustand eines Objektes ist eine unsichtbare Abhängigkeit und kann zu zahlreichen Fehlern führen. Randfälle können demnach auch schnell übersehen werden
Ein weiteres Beispiel:
class Event {
private static final int BASE_FEE = 1000; // constants should be final
private final List<String> participants; // fields should be final if possible
public Event() {
participants = new ArrayList<>();
}
public void addParticipant(String name) { // final not required for parameters
participants.add(name); // the list is final, its content is not
}
public int calculateProfit(int ticketPrice, int venueCost) {
int fixedCost = BASE_FEE + venueCost; // final is not needed for local variables
return participants.size() * ticketPrice - fixedCost;
}
}