Gibt es eine Lösung, um eine letzte Variable in einem Java-Konstruktor zu verwenden? Das Problem ist, dass wenn ich ein letztes Feld initialisiere:
%Vor%dann kann ich es nicht im Konstruktor verwenden. Java führt zuerst den Konstruktor und dann die Felder aus. Gibt es eine Lösung, mit der ich auf das letzte Feld im Konstruktor zugreifen kann?
Ich verstehe deine Frage nicht wirklich. Das
%Vor%wird wie folgt ausgeführt:
%Vor%Wir kommen von der Frage weg.
Ja, Sie können eine Variable private final
verwenden. Zum Beispiel:
Dies bedeutet, dass die Account-Klasse eine Abhängigkeit von den beiden Strings, Account- und Routing-Nummern hat. Die Werte dieser Klassenattribute MÜSSEN festgelegt werden, wenn die Klasse Account erstellt wird, und diese Anzahl kann nicht geändert werden, ohne eine neue Klasse zu erstellen.
Der Modifikator "final" macht die Attribute unveränderlich.
Wenn Sie es statisch markieren, können Sie es im Konstruktor verwenden, aber da Sie es endgültig festgelegt haben, kann es nicht geändert werden.
%Vor%ist es möglich, einen statischen Init-Block zu verwenden.
%Vor%Wenn Sie versuchen, den Wert im Konstruktor zu ändern, können Sie keinen Standardwert zuweisen, oder Sie müssen ihn nicht endgültig machen.
%Vor%oder
%Vor%In diesem Fall können Sie das Feld auch als 'statisch' markieren.
Eine weitere Möglichkeit besteht darin, das Feld in einem Instanzinitialisierungsblock zu initialisieren:
%Vor%In diesem Fall können Sie es genauso gut statisch machen. Und Java-Konvention besteht darin, solche Konstanten in ALL_CAPS zu benennen.
Dabei ist getName () eine statische Funktion, die Ihnen den Namen gibt.
Ich kann es nicht im Konstruktor verwenden, während Java zuerst den Konstruktor ausführt und dann die Felder ...
Dies ist nicht korrekt, Felder werden zuerst ausgewertet, andernfalls könnten Sie auf keine Standardwerte von Elementen in Ihren Konstruktoren zugreifen, da sie nicht initialisiert würden. Dieses funktioniert :
%Vor%Das Schlüsselwort final markiert lediglich die Elementkonstante, sie wird wie jedes andere Element behandelt.
EDIT: Versuchen Sie den Wert im Konstruktor festzulegen ? Das würde nicht funktionieren, da das Mitglied unveränderlich ist, wenn es als endgültig definiert ist.
Tags und Links java constructor initialization variables final