Wann final verwenden?

Maik.Neumann

Aktives Mitglied
Juten Tach,

wann genau nutze ich am beste die final Deklarartion?

Nutze ich sie z.B. immer, wenn ich einen beliebigen Wert als Parameter einer Methode übergeben möchte und dieser in der Methode selbst nur gelesen-, aber nicht verändert werden soll?

Und wann setze ich eine Referenzvariable z.B. als final? Ebenfalls nur dann, wenn aus diesem Objekt ausschließlich nur gelesen werden soll?

Maik
 

kaoZ

Top Contributor
Java:
final

musst du unter anderem auch verwenden wenn du aus inneren Klassen auf Variablen anderer Methoden zugreifen möchtest, da dies nur funktioniert wenn diese Eindeutig und unveränderbar sind.

da ich zzt. an einem Projekt arbeite in welchem ich mir grade Gedanken über das Flexible erzeugen von beliebigen Frames für ein Programm mache, arbeite ich genau jetzt mit final, hier mal ein Beispiel :

Java:
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class FrameFactory {

	public static JFrame createFrame(String title, int width, int height, int closeOp, JFrame parent, boolean value){
		JFrame frame = new JFrame();
		
		frame.setTitle(title);
		frame.setSize(width, height);
		frame.setDefaultCloseOperation(closeOp);
		frame.setLocationRelativeTo(parent);
		frame.setVisible(value);
		
		return frame;
	}
	
	public static void main(String[] args) {
		
		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
		JPanel p = new JPanel();
		JButton b = new JButton("Klick mich");
		
		final JFrame frame = FrameFactory.createFrame("Editor",(int) d.getWidth(), (int) d.getHeight(), 2, null, true);
		p.add(b);
		frame.add(p);
		
		b.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				FrameFactory.createFrame("Dialog", 300, 150, 2, frame, true);
				
				/*
				 * Hier erhält der erzeugte Frame nur zugriff auf das Elternelement (frame ), insofern dieses als 
				 * final deklariert ist.
				 */
				
			}
		});
	}
}


Ohne den Einsatz von
Code:
final
an dieser Stelle, hätte ich z.B aus dem Listener keinen zugriff auf die Variable frame, da diese lokal definiert ist .

Oder selbstverständlich überall dort wo du ein Überschreiben, eine erneute Wertzuweisung unterbinden möchtest (Variablen / Konstanten / Methoden), oder du sicherstellen willst das keine Weiteren Unterklassen (Klasse / Vererbung) erzeugt werden können.
 
Zuletzt bearbeitet:
F

fisherman

Gast
Final deklariert man auch Klassen, von denen man nicht möchte, dass andere Klassen von ihnen erben. Etliche Klassen der Java Standard API sind daher final.
 

Gucky

Top Contributor
Praktisch ist sie auch, wenn du eine Konstante definieren, dafür aber kein ENUM verwenden willst. Da musst du nur aufpassen, da der Compiler den Namen der Variable durch ihren Wert ersetzen darf, so es ein primitiver Datentyp (oder String?) ist.
Wenn du den Wert dann änderst und nicht sämtliche Teile des Projektes neu kompilierst, in dem du diese Konstanten verwendest, bleibt der Wert so stehen.
Da nehmen sie ein bisschen die Position des Präprozessors aus C/C++ aus, wenn dir das hilft. :D
 

Exorcist

Mitglied
final kann je nachdem, wo sie steht, verschiedene Bedeutungen annehmen

-Eine als final deklarierte Variable wird zu einer Konstante und ist über die gesamte Laufzeit des Programmes nicht mehr veränderbar

-Eine als final gekennzeichnete Klasse kann nicht mehr per extends vererbt werden.

- Eine als final deklarierte Methode lässt sich nicht mehr überschreiben

Falls du also eine Variable hast, die über die gesamte Laufzeit des Programmes den Wert nicht verändert, so kannst du sie als final markieren, so wird sie zur Konstante. Möchte irgendwann jemand im Code die Variable ändern, so gibt der Compiler eine Fehlermeldung aus.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Bessere Performance durch final: wann denn überhaupt? Java Basics - Anfänger-Themen 28
B objekt wann als final deklarieren? Java Basics - Anfänger-Themen 2
KogoroMori21 Wann ist der richtige Zeitpunkt, um sich Hilfe zu suchen? (Bin Informatik-Student) Java Basics - Anfänger-Themen 10
I Logik Zahlungsprozess - Wann Bestellobjekt anlegen? Java Basics - Anfänger-Themen 2
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
berserkerdq2 Java streams, wann nutze ich ::, also 2x Doppelpuntk bei Streams? Java Basics - Anfänger-Themen 5
W Wann und warum hashcode und equals? Java Basics - Anfänger-Themen 14
W Wann Rückgabewerte 0, 1, -1? Java Basics - Anfänger-Themen 27
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
K In andere Zahlensysteme umwandeln, wann klappt immer der Trick mit log? Java Basics - Anfänger-Themen 6
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
F Wann ist es eine Instanz und wann nicht? Java Basics - Anfänger-Themen 1
C Instanzen, wann muss ich Instanzen erzeugen & wo?) Java Basics - Anfänger-Themen 23
S Wann Methode abstract? Java Basics - Anfänger-Themen 10
S Wann buffer löschen? Java Basics - Anfänger-Themen 5
R Wie überprüfen wann der User online oder offline ist? Java Basics - Anfänger-Themen 5
C Polymorphie Was genau ist Polymorphie und wann genau sollte man es verwenden? Java Basics - Anfänger-Themen 9
I Wann ist Client plattformunabhängig? Java Basics - Anfänger-Themen 22
M Best Practice Wann eine Methode schreiben ? Java Basics - Anfänger-Themen 14
K Warum funktioniert das und wann erden die Objektmethoden nun ausgeführt? Java Basics - Anfänger-Themen 7
IngoF Welches Event kommt wann? Java Basics - Anfänger-Themen 8
M Wann eigene implementierte HashCode Methode zwingend erforderlich? Java Basics - Anfänger-Themen 1
X Wann schreibt man diese Syntax zeichen { } Java Basics - Anfänger-Themen 8
O Wann nutzt man static? Java Basics - Anfänger-Themen 19
C Klassendesign / Wann Interface implementieren und wann Klassen vererben? Java Basics - Anfänger-Themen 3
S Wann existiert eine Instanz (eigene Klasse) Java Basics - Anfänger-Themen 8
M Wann PATH und wann JAVA_HOME in Windows System 7 setzen? Java Basics - Anfänger-Themen 2
M Wann eine Wrapper Klasse verwenden und wann einen primitiven Datentypen? Java Basics - Anfänger-Themen 8
D Ab wann getter und setter Java Basics - Anfänger-Themen 2
B Erkennen, wann static oder nicht? Java Basics - Anfänger-Themen 7
E wann welche Konstanten verwenden? Java Basics - Anfänger-Themen 7
P Wann Byte-Stream und wann Character-Stream? Java Basics - Anfänger-Themen 11
T Vererbung Wann wird die Methode paint aufgerufen? Java Basics - Anfänger-Themen 4
M Wann statische Methoden/Attribute? Java Basics - Anfänger-Themen 2
vandread Java Wildcards - Wann super wann extends? Java Basics - Anfänger-Themen 2
K Wann Vererbung und wann Interface verwenden? Java Basics - Anfänger-Themen 12
D Wann genau nutze ich ein solches Interface? Java Basics - Anfänger-Themen 3
K Wann genau brauche ich die Anweisung gleich null? Java Basics - Anfänger-Themen 10
B Wann toString() überschreiben? Java Basics - Anfänger-Themen 21
S OOP Wann Proxies und Interfaces? Java Basics - Anfänger-Themen 3
P Threads Wann läuft es parallel ab ? Java Basics - Anfänger-Themen 4
C Variablen Wann werden Instanzvariablen initalisiert? Java Basics - Anfänger-Themen 10
P Java Stream, wann welche Stream verwenden? Java Basics - Anfänger-Themen 3
T Ab wann ist es ein großes Projekt? Java Basics - Anfänger-Themen 35
D Wann genau abstrakte Klasse und wann ein Interface verwenden? Java Basics - Anfänger-Themen 4
W Wann nutze ich "import"? Java Basics - Anfänger-Themen 12
A junit test wann verwendet man "was"? Java Basics - Anfänger-Themen 4
H Wann ein Objekt der Programmklasse in main anlegen Java Basics - Anfänger-Themen 2
G Wann ist ein == Vergleich bei Gleitkommazahlen fahrlässig? Java Basics - Anfänger-Themen 8
T Wann for und wann while?? Java Basics - Anfänger-Themen 35
-horn- Wann wird alles NaN erzeugt? Java Basics - Anfänger-Themen 22
S Wann wird eine Klasse geladen? Java Basics - Anfänger-Themen 17
C this - wann verwende ich das? Java Basics - Anfänger-Themen 10
T Threads - Ab wann wirds Kritisch?! Java Basics - Anfänger-Themen 7
M Wann muss man eine Variable mit set-/get-Methoden in eine Bean schreiben? Java Basics - Anfänger-Themen 19
G field public/private wann Java Basics - Anfänger-Themen 11
GambaJo Ab wann neue Klasse erzeugen? Java Basics - Anfänger-Themen 2
G Wann Arrays, wann Collections? Java Basics - Anfänger-Themen 36
GambaJo Wann try.catch nutzen? Java Basics - Anfänger-Themen 11
N Wann muss eine Methode - protected sein wann public wann. Java Basics - Anfänger-Themen 5
Y Wann / Wozu inner class Java Basics - Anfänger-Themen 3
K StringBuilder notwendig ab wann? Java Basics - Anfänger-Themen 42
S wann static Funktionen wann nicht Java Basics - Anfänger-Themen 6
N Wann und wie oft finalize Methode verwenden( überschreiben ) Java Basics - Anfänger-Themen 6
Bernasconi Programmierstil / Wann eine neue Datei? Java Basics - Anfänger-Themen 5
M wann, welche schleife Java Basics - Anfänger-Themen 3
M Ab wann ist die Datei sichtbar? Java Basics - Anfänger-Themen 3
G Herausfinden, wann mehrere Threads abgeschlossen sind Java Basics - Anfänger-Themen 3
G Überprüfen wann ein Dokument abläuft? Java Basics - Anfänger-Themen 3
N SAX, StAX, JDOM oder DOM , ab wann welches für XML Java Basics - Anfänger-Themen 14
M Wann ist ein Programm beendet? Java Basics - Anfänger-Themen 6
G Wann am besten getSize() aufrufen? Java Basics - Anfänger-Themen 6
I Festellen wann Methode in anderer Klasse fertig ist Java Basics - Anfänger-Themen 5
M wann statische klassen? Java Basics - Anfänger-Themen 14
M Wann ist initialisieren sinnvoll? Java Basics - Anfänger-Themen 4
B Wann Comparator und wann Comparable Java Basics - Anfänger-Themen 6
R Wann benutzt man << oder >> ? Java Basics - Anfänger-Themen 2
G Klassen: Wann initialisiere ich wo meine Variabeln Java Basics - Anfänger-Themen 6
C Setter-Methode mit final-Attribut Java Basics - Anfänger-Themen 9
I Variable innerhalb Methode: Local variable test defined in an enclosing scope must be final or effectively final Java Basics - Anfänger-Themen 3
J final attribute erben Java Basics - Anfänger-Themen 2
L Methode implementieren, Parameter die übergeben werden sind final Java Basics - Anfänger-Themen 4
A final String verrechnen Java Basics - Anfänger-Themen 2
N Wie kann ich eine meine Variable Final machen? Java Basics - Anfänger-Themen 1
A Variablen zum final verändern Java Basics - Anfänger-Themen 4
D Interface Final für Parameter in überschriebenen Methoden? Java Basics - Anfänger-Themen 3
E Sinn: final in Parameterliste verwenden Java Basics - Anfänger-Themen 2
M Iterator cannot refer to a non final... Java Basics - Anfänger-Themen 20
shiroX Klassen Klasse/Methode private final jUnit-Fehler Java Basics - Anfänger-Themen 5
D Kapselung final Variablen mit Getter? Java Basics - Anfänger-Themen 2
R JTextArea final Status ändern Java Basics - Anfänger-Themen 11
F Static final Klasse Java Basics - Anfänger-Themen 0
S Kopierkonstrukter eines Objekts mit final Attributen Java Basics - Anfänger-Themen 6
T Schlüsselworte final Java Basics - Anfänger-Themen 1
F Methoden Cannot refer to a non-final variable.. verständnisproblem. Java Basics - Anfänger-Themen 7
C Klassen Minesweeper Problem. int needs to be final (inner class problem) Java Basics - Anfänger-Themen 3
R Variablen final String Variable als Attribut veränderbar? Java Basics - Anfänger-Themen 21
U final Instanz Java Basics - Anfänger-Themen 11
W run Methode in Time erzwingt final Java Basics - Anfänger-Themen 3
D Polymorphie final class Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben