Zunächst einmal ist dies KEIN exakter Duplikat von Endgültige Variable vor Konstruktor in Java initialisieren. Es ist wahrscheinlich verwandt, aber es gibt keine Antworten, die mich zufriedenstellen.
Mein Problem betrifft endgültige Variablen in Swing-GUIs. Es geht insbesondere um benutzerdefinierte Action
s. Ich habe eine Anzahl von final
-Variablen und eine Anzahl von static final
-Variablen.
Die Frage ist: Wenn die Variable tatsächlich eine Konstante ist, was ist besser: sie zur Konstruktionszeit initialisieren oder bei der Deklaration initialisieren?
Die Antworten auf die oben genannte Frage tendieren im Allgemeinen dazu, die Variable static
zu machen, sobald Sie sie bei der Deklaration zuweisen können. Das ergibt für mich nicht wirklich Sinn, da die Variablen nicht in einem statischen Kontext verwendet werden. Ich habe ein paar Bilder, die mein Formular wie Symbole verwendet, ich habe diese statisch gemacht, weil ein Bild einfach eine statische Sache ist, es sei denn, Ihre Anwendung modifiziert sie. Das macht Sinn.
Andererseits sind die Action
s neue Instanzen einer benutzerdefinierten inneren Klasse. Technisch gesehen sind sie auch statisch, aber es fühlt sich einfach anders an. Sie dürfen einfach nicht im statischen Kontext verfügbar sein meiner Meinung nach. Setzte ich also:
private final CustomAction customAction = new CustomAction();
Oder initialisiere ich es im Konstruktor? Was ist besser? Oder denke ich falsch über static
nach?