Ich habe etwas über den Zweck von Optional
gelesen (leider erinnere ich mich nicht wo) in Java 8, und ich war überrascht, dass der Schriftsteller die Verwendung eines Optional
als Attribut in einer Klasse nicht erwähnt.Ist es empfehlenswert, Optional als Attribut in einer Klasse zu verwenden?
Da ich in meinen Kursen ziemlich häufig Optionals verwende, habe ich mich gefragt, ob das eine gute Übung ist. Oder könnte ich besser nur normale Attribute verwenden, die null
zurückgeben, wenn sie nicht gesetzt sind?
Hinweis: Es ist wie meine Frage aussehen Meinung basiert, aber ich habe das Gefühl, Optional
in einer Klasse verwendet, ist wirklich nicht der Weg zu gehen (nach dem erwähnten Beitrag lesen). Aber ich benutze es gerne und finde keinen Nachteil, es zu benutzen.
Beispiel
Ich möchte ein Beispiel geben zu klären. Ich habe eine Klasse Transaction
, die wie folgt aufgebaut ist:
public class Transaction {
private Optional<Customer> = Optional.empty();
....
vs
public class Transaction {
private Customer = null;
....
Wenn auf einem Customer
Kontrolle, ich denke, es logischste ist transaction.getCustomer().isPresent()
als transaction.getCustomer() != null
zu verwenden. Meiner Meinung nach ist der erste Code sauberer als der zweite.
@AdamSiemion Sprechen wir über Guavas 'Optional' oder Java's' Optional' hier? – Jesper
@AdamSiemion Danke für den Link! Ich bin nicht so erfahren, also wusste ich nicht, dass Guava es bereits hatte. Der Hauptgrund, der dort erwähnt wird, ist jedoch, dass "Optional" drei Möglichkeiten hat: Gegenwart, Abwesenheit und Null. Java 8 ist nicht mehr vorhanden, so dass dieses Argument nicht mehr gültig ist. – bashoogzaad
@bashoogzaad Ob es drei (null, abwesend, vorhanden) oder zwei Optionen (null/leer, vorhanden) gibt, ändert nicht den Zweck von 'Optional' . –