Variablen Variablen fürs ganze Projekt festlegen

JensMander

Bekanntes Mitglied
Hallo Forum,

ich habe in meinem Projekt mehrere Packages und mehrere Klassen mit einigen Methoden/Funktionen.
Gibt es eine Möglichkeit Variablen fest zu definieren, so dass ich diese nicht jedes mal der Funktion mit geben muss?
-für den Fall dass die Funktion in anderen Klassen ist
-für den Fall dass die Funktion in einem anderen Package ist

mit freundlichem Gruß
Jens
 

Orolhawion

Aktives Mitglied
ich mach das meistens mit ner klasse die nur final static variablen hält.

da kommst du dann überall mit Klassenname.variablenName dran.
 

Crian

Top Contributor
Ich hab ein wenig gegooglet, da ich das Pattern noch nicht kannte, und viele Diskussionen darüber gelesen, aber noch keine Definition dazu gefunden. Hat jemand dazu einen Link? Kann auch gern auf englisch sein.
 
T

Tomate_Salat

Gast
Man sieht oft, dass einfach ein Interface benutzt wird und dort wie schon beschrieben [c]public static final[/c] variablen definiert werden und man mit diesen dann arbeitet.

Wenn man sein Projekt mit DI (z.B. guice) realisiert, kann man sich diese Variablen auch direkt "injecten" lassen, dann kümmert sich das Framework um die notwendigen Abhängigkeiten.
 

Andi_CH

Top Contributor
So ähnliche Dateien gibt es in unserem Projekt diverse - manche sind Interfaces andere einfach Klassen. was geeigneter ist muss von Fall zu Fall entschieden werden.
(Warum genau die ein Interface ist, weiss ich nicht)

Java:
package ch.xxx.yyy;

public interface ZzzDefines {
	public static final String EL_NONE		= "NONE";
	public static final String EL_CLAMP_WOL	= "CLAMP_WOL";
	public static final String EL_CLAMP_WL	= "CLAMP_WL";
}

Es gibt auch solche mit Struktur:
Java:
package ch.xxx;

public class Module extends CalculationModule {
	public static final String DB_CONST_BETA = "Beta";
	// da hat es natürlich noch mehr drin :-)
}
CalculationModule sieht auch nicht viel anders aus, hat aber einen anderen Gültigkeitsbereich (es gibt genau eines) - Module gibt es in jedem spezifischen Package.

EDIT: ----------------------
Ich habe eben gelesen "Variablen für das ganze Projekt..." Graus! Ich hoffe das hat du nicht wirklich vor! Natürlich gibt es in vielen Projekten datenlastige Klassen, aber die Varialen selbst sind hoffentlich nur über getter und setter greifbar.
 
Zuletzt bearbeitet:

sambalmueslie

Bekanntes Mitglied
Hallo Forum,

ich habe in meinem Projekt mehrere Packages und mehrere Klassen mit einigen Methoden/Funktionen.
Gibt es eine Möglichkeit Variablen fest zu definieren, so dass ich diese nicht jedes mal der Funktion mit geben muss?
-für den Fall dass die Funktion in anderen Klassen ist
-für den Fall dass die Funktion in einem anderen Package ist

mit freundlichem Gruß
Jens

Variablen oder Konstanten?? Was von beidem möchtest du?

Variablen global würde ich jetzt mal pauschal als schlechten Stil abtun und dir lieber dazu raten über dein Programm nochmal nachzudenken und die Werte eben den Funktionen mitzugeben auch wenn man etwas mehr schrieben muss.

Bei Konstanten ist noch ergänzend zu den obrigen Lösungen die Möglichkeiten der Properties zu nennen.

Java ist auch eine Insel – 11.7 Die Properties-Klasse

Wenn du dafür dir einen Singleton-Provider baust kannst du von überall bequem auf die Konstanten zugreifen und sie bei Bedarf
auch von außerhalb (vor Programmstart) manipulieren.

Gruß Oli
 
B

bygones

Gast
Interfaces als Konstantenhalter zu missbrauchen stammt noch von Zeiten meines Opas und war damals schon nicht gut - ists immer noch nicht.

Herrlich wenn man dann sowas sieht

Java:
public interface Foo {
   public String value = "foobar";
}

public class AClass implements Foo {
  public void doo() {
    System.out.println(value);
  }
}

schauder

für Konstanten klassen gibt es eine simple finale (!) Klasse mit einem privaten Konstruktor.
 

JensMander

Bekanntes Mitglied
mh, das sind ja eine Menge Antworten und viele konträre Meinungen.

Ich habe unteranderem einige Konstanten, die aber eben auch als Variable initialisiert werden.

int Anzahl = 5; nun wird Anzahl an viele Funktionen übergeben und eben auch an Funktionen in Funktionen.

oder eben double[][] Test = new double[2][2];

und wird dann so bearbeitet:

Test = funktionX();
Test = funktionY();

etc.

und ich dachte mir, das es eben übersichtlicher wäre, eine Klasse mit diesen Variablen zu erzeugen, so dass diese eben nur in dieser festgelegt werden müssten und Konstanten eben nur in dieser Klasse abgeändert werden müssten.

mfg
Jensen
 

Andi_CH

Top Contributor
Ich habe unteranderem einige Konstanten, die aber eben auch als Variable initialisiert werden.

Sind es nun Konstanten oder Variablen? Also ich glaube dass wir uns wenigstens in dieser Hinsicht einige sind, dass das ein Widerspruch ist.

@bygones: Zum Thema "Opa" werder dein noch mein Opa wusste etwas von Interfaces und Java - nicht mal dein und mein Vater.

Was du da äusserst ist einfach eine unbegründete Behauptung die, und da bin ich mir ziemlich sicher, so nicht geäussert worden wäre, wenn dabei ein anderer Nick stehen würde.
Also begründe deine Aussage oder sag, dass es deine persönliche Vorliebe ist, das Problem anders zu lösen.

Mir ist überhaupt nicht klar warum man auf Konstanten über Vererbung zugreifen muss - ich verstehe sogar mein zweites Beispiel nicht. Mit der Vererbung erspart man sich nur einen import - mehr nicht.
 

JensMander

Bekanntes Mitglied
Okay, dann versuche ich mal mein Verständnis von Variable und Konstante zu erklären.

Eine Konstante ist beständig und ändert sich nicht z.B der Wert 5; Weil dieser aber gebraucht wird und nicht jedes mal separat geändert werden soll, wird er einer Variable zugeteilt sprich int Wert = 5.
Das ist mein Verständnis einer Variablen die als Konstante dient.

Eine Variable die auf Grund bestimmter Events sich ändert wäre z.B.
int X = 0;
for()
{
X=X++
}
dabei würde sich x für jeden for-durchlauf ändern und wäre somit "variabel" müsste aber eben wie dennoch angelegt werden.

Bin ich mit meinem Verständnis jetzt voll daneben?
 
M

maki

Gast
Zum Thema Konstanten in Interfaces:
Ein eindeutiger Missbrauch von Interfaces, denn es seit Java 5 gar nicht mehr braucht(deswegen wohl der "Opa"), seitdem definiert man seine Konstanten zB. in einer Klasse, und kann sie ganz einfach mit einem [c]static import[/c] nutzen, das war übrigens der Grund für die Einführung von static imports.
Wiki Artikel zum "Constant Interface Antipattern": Constant interface - Wikipedia, the free encyclopedia
Das hat nix mit persönlicher Vorliebe zu tun, sondern schlicht damit, wie vertraut man mit Java ist, sollte auch keiner persönlich nehmen.

Zum Thema Konstanten:
"Echte" Konstanten git es in java nicht (das [c]constant[/c] Schlüsselwort ist reserviert aber nicht belegt), [c]static final[/c] kommt dem aber sehr nahe.
"final static" kann man nicht zuverlässig über variablen initialisieren, der Compiler optimiert diese nämlich.
Merke: final static immer mit echten Werten initialisieren, zB. String Literale, primitive u.ä., sonst wundert man sich früher oder später gewaltig.

Für allgemein verwendete Variablen, zB. Konfigurationsdaten git es andere Lösungen, von Properties, bis hin zu "Config" Objekten wie in Spring und commons-configuration.
 
Zuletzt bearbeitet von einem Moderator:

Fu3L

Top Contributor
Das was du vorher für "wahre Konstanten" hieltst, sind so genannte Literale. Also Werte wie "5", die einfach fest im Quelltext stehen.
 

JensMander

Bekanntes Mitglied
Okay, durch "final" erreiche ich also das der Wert nicht änderbar ist. Die Konstanten kann ich also innerhalb einer Klasse für ein gesamtes Projekt festlegen. Die veränderlichen Variablen sollte ich also am besten immer mitnehmen?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
T Variablen Java Basics - Anfänger-Themen 1
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
M Aufsummieren von variablen Wertegrößen Java Basics - Anfänger-Themen 17
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
ashi Variablen aufrufen Java Basics - Anfänger-Themen 17
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
C Konstruktoren und Variablen Java Basics - Anfänger-Themen 42
F Auf Variablen eines Konstruktors zugreifen Java Basics - Anfänger-Themen 4
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
Arif Vererbung Methodenvererbung mit finalen Variablen Java Basics - Anfänger-Themen 1
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
S Variablen Variablen in einer Schleife erstellen lassen Java Basics - Anfänger-Themen 11
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
F Variablen Werte einer Klasse überschreiben Java Basics - Anfänger-Themen 4
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
J Frage dazu Variablen klassenübergreifend zu verändern Java Basics - Anfänger-Themen 22
M Java Instanz-Variablen ? Java Basics - Anfänger-Themen 3
B Variablen von Methoden übertragen Java Basics - Anfänger-Themen 2
M Variablen umbenennen Java Basics - Anfänger-Themen 1
T Körper Brechnung - Lokale Variablen in Methoden übergeben Java Basics - Anfänger-Themen 10
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
mars90 Fehler in der Variablen Deklaration Java Basics - Anfänger-Themen 8
E Variablen in formatierter Ausgabe Java Basics - Anfänger-Themen 15
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
M Komisches Verhalten der Variablen Java Basics - Anfänger-Themen 6
H Variablen Multiplikation einer inkrementierten Variablen Java Basics - Anfänger-Themen 5
scratchy1 Variablen vertauschen wenn Bedingung "umgedreht" wird Java Basics - Anfänger-Themen 40
J Variablen mit einer anderen Klasse bekannt machen Java Basics - Anfänger-Themen 7
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1
A Übergreifende Variablen Java Basics - Anfänger-Themen 17
A Variablen Verständnisfrage bzgl. Variablen/Referenzen Java Basics - Anfänger-Themen 3
H Variablen Methode zum Abfragen von Variablen aus Subklassen Java Basics - Anfänger-Themen 9
P Variablen Variablen voneinander abhängig Java Basics - Anfänger-Themen 54
F Liste nach einer Variablen sortieren Java Basics - Anfänger-Themen 6
L Variablen in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
M For-Schleife durch zwei versch. Variablen begrenzen Java Basics - Anfänger-Themen 27
J Klassen Variablen in andere Klassen oder Methoden übernehmen Java Basics - Anfänger-Themen 1
P Liste auslesen und in Variablen speichern Java Basics - Anfänger-Themen 7
temi Redundante Variablen Java Basics - Anfänger-Themen 29
Aprendiendo Zweifel mit versteckter Variablen Java Basics - Anfänger-Themen 16
L Variablen einmal nur zu weisen Java Basics - Anfänger-Themen 62
D Statische Variablen/Methoden Java Basics - Anfänger-Themen 3
R Abfrage von Variablen in Unterklassen einer ArrayList Java Basics - Anfänger-Themen 9
M Listener für Button - Wert von Variablen verändern Java Basics - Anfänger-Themen 14
S Vererbung Variablen klassenübergreifend nutzen Java Basics - Anfänger-Themen 42
R Auf Variablen einer anderen Klasse zugreifen? Java Basics - Anfänger-Themen 1
D Fehlermeldung obwohl Variablen bereits deklariert sind? Java Basics - Anfänger-Themen 14
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
Aruetiise Variablen JFrame und Variablen Java Basics - Anfänger-Themen 3
L Variablen dekleration + reset Java Basics - Anfänger-Themen 16
T Übernahme einer Variablen im ActionListener/ActionEvent Java Basics - Anfänger-Themen 2
D Kapselung final Variablen mit Getter? Java Basics - Anfänger-Themen 2
C Variablen von einem JFrame in einen anderen übertragen Java Basics - Anfänger-Themen 3
P Interface Variablen-Inhalte werden nicht übergeben Java Basics - Anfänger-Themen 3
C Variablen in Schleifen außerhalb verwenden Java Basics - Anfänger-Themen 2
S Variablen Flexible Variablen Namen Java Basics - Anfänger-Themen 3
R Erste Schritte 3 Variablen hochzählen lassen Java Basics - Anfänger-Themen 1
RowdyN Variablen Variablen beliebig benennen? Java Basics - Anfänger-Themen 6
S OOP Variablen zwischen mehreren Klassen Java Basics - Anfänger-Themen 11
T Koordinatensystem zeichnen - Variablen merken? Quadratische Funktion zeichnen? Java Basics - Anfänger-Themen 5
H Variablen einer Schleife zwischenspeichern Java Basics - Anfänger-Themen 2
P Klassen Variablen von einer Klasse zur anderen Java Basics - Anfänger-Themen 5
H Objekt überschreibt Variablen vorheriger Objekte Java Basics - Anfänger-Themen 2
P Variablen in Excel speichern Java Basics - Anfänger-Themen 6
S PHP Aufruf mit mehreren Variablen Java Basics - Anfänger-Themen 2
F Variablen unterschiedlicher Datentypen Java Basics - Anfänger-Themen 6
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
L Vergleich zweier Variablen, mit Abweichung Java Basics - Anfänger-Themen 3
P Variablen einer Methode in andere Method übergeben Java Basics - Anfänger-Themen 6
G Variablen Verwendung von Variablen in anderer Klasse Java Basics - Anfänger-Themen 6
P Textfelder in Variablen speichern Java Basics - Anfänger-Themen 13
K arraygröße durch variablen Konstruktor? Java Basics - Anfänger-Themen 7
J Vererbung Variablen aus Superklasse übernehmen Java Basics - Anfänger-Themen 2
L Variablen aus TXT Datei auslesen und vergleichen. Java Basics - Anfänger-Themen 5
K Welchen Typ haben Variablen in Default-Methoden und in statischen Methoden in Schnittstellen? Java Basics - Anfänger-Themen 4
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
L zwei Variablen gleichzeitig übergeben Java Basics - Anfänger-Themen 6
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7
D Klassen Verhalten von Klassenvererbung bei Variablen Java Basics - Anfänger-Themen 1
G Alle Objekte und Variablen automatisch ausgeben Java Basics - Anfänger-Themen 7
S OOP Werte von Vektoren mit 3 Variablen ausgeben lassen Java Basics - Anfänger-Themen 3
A Variablen aus einer Schleife gezielt auslesen Java Basics - Anfänger-Themen 11
A Methoden Zugriff auf eingelesene Variablen in der main Methode (ohne Änderung der Parameterliste) Java Basics - Anfänger-Themen 4
K Enigma, variablen übernehmen Java Basics - Anfänger-Themen 6
F Erste Schritte Dynamische Variablen Java Basics - Anfänger-Themen 15
N Variablen zurück casten Java Basics - Anfänger-Themen 3
M Repräsentation von variablen/OOP Java Basics - Anfänger-Themen 2
B Probleme beim einlesen einer short variablen für einen Array Java Basics - Anfänger-Themen 1
S Warum erlaubt ein while-Loop keine Variablen-Declaration wie der for-Loop..? Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben