konstanten leicht benutzen? (sichtbarkeit)

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
hey,
um mein programm zu steuern benutze ich für bestimmte vergleiche oder um gewisse dinge festzustellen, einfach integer-werte.

z.b: 1 = links, 2 = rechts, 90 = grün, etc.

ich kann ja nun eine klasse machen die lauter statische variablen festgelegt hat, z.B.

public class Parameter{
public static final int links = 1;
...
}

allerdings muss ich dann überall in anderen klassen die werte ansprechen mit Parameter.links etc.
Das ist für die gute LEsbarkeit des Codes leider nicht so gut, denn z.B eine steuerungsfunktion sollte nur
"links" beachten, und nicht irgendwas mit einem Klassennamen da drin stehen haben.

Kann ich irgendwie solche Konstantendefinitionen oder eine Klasse so gestalten, dass ich die Variablen generell nur beim namen anreden kann, ohne Prefixe?

da gibt es ja so sachen bei der sichtbarkeit, wie package, scoped oder so usw.

Oder gibt es generell eine elegantere Methode, besimmte Begriffskonstanten in einem Programm einzuführen?
Ich kann mir nicht vorstellen dass die Profis das über so eine Klasse machen und dann die Variablen immer mit dem vollen Namen ansprechen. oder doch?

Danke
 
G

Guest

Gast
hm, hab das versucht, aber hab nur ein Beispiel bei vordefinierten API-klassen gefunden.

wenn in meiner Klasse "H" eine variable statisch deklariert ist, und ich in einer anderen Klasse versuce:

static import H.links;

oder H.*;

dann findet er sie nicht. Müssen die dann im selben Package liegen? oder hab ich was falsch gemacht?
 

kEijuQ

Mitglied
hallo :)

ich werde aus deinem Posting leider nicht schlau ... eventuell kannst du ja den quellcode posten und dein Problem etwas detaillierter beschreiben ...

aber so wie ich das verstanden habe (kann mich aber auch täuschen -> daher quellcode plz ^^) ... kannst du, wenn du die klasse als static deklarierst, ohne den vollen namen darauf zugreifen ...

mfg.
 

Tobias

Top Contributor
Ich benutze sowas nicht, weil ich es überflüssig finde, aber laut meiner Java-Referenz muß es heißen:

Code:
import static H.*;

mpG
Tobias
 

Ocean-Driver

Bekanntes Mitglied
Hi,

Eine Möglichkeit das ganze als Interface zu bauen, z.B:


Code:
public Interface konstanten{

public static final int wert = 100;

}



Code:
public class irgendeineKlasse implements konstanten {


//Wert wird aufgerufen
System.out.println(wert);

}
 
B

Beni

Gast
Wenn H in einem Package ist, musst du das auch angeben:
Code:
static import dasPackageVonH.H.links;

Und natürlich einen Compiler eines JDKs >= 1.5 verwenden :wink:
 
G

Guest

Gast
hey,

also erstmal zum interace: ich hab gelesen dass static imports eben GEGEN interfaces eingeführt wurden.

Meine Klassen sind nicht vererbt, nicht in einem package:

Code:
public class X{

  public static final LINKS = 2;
}


Code:
import X.*;
// oder auch: import X.LINKS;
public class Y{

   System.out.println(LINKS);       // findet er nicht, compile error!
}

naja, geht eben nicht, er findet die variable LINKS nicht!
 

DocRandom

Top Contributor
jo da gehört ja auch noch der Datentyp deklariert!
Dein Code(falsch):
Code:
public class X{

  public static final LINKS = 2;
}

bereinigtt:
Code:
public class X{

  public static final int LINKS = 2;
}

lg
DocRandom
 
G

Guest

Gast
oh klar, da hab ich ja lauter flüchtigkeitsfehler gemacht.

die sache mit eNums ist ganz cool, mal sehen ob ich lieber die benutze.

danke
 
G

Guest

Gast
ich hab noch ein problem mit eNums, irgendwie scheint das nicht so zu funktionieren wie ich denke.
in dem links machen die nur so komische zuweisungen über values() oder so, was is aber hier in meinem beispiel falsch:

Code:
public static class Enums{
	
	public static enum Action
	{ NOACTION, TAKE, USE, LOOK, TALK };
	
}

Code:
public class Player{
	
	private Action action;
	
	public Player(){
		action = NOACTION;
        }
}

er findet die variable NOACTION wieder nicht..
 

Triebi

Aktives Mitglied
Anonymous hat gesagt.:
in dem links machen die nur so komische zuweisungen über values() oder so,
Ich hätte wohl doch nicht den ersten Artikel nehmen sollen, der mir eingefallen ist :)

1. Enums sind eigene Klassen, sie brauchen nicht unbedingt in andere gekapselt werden.
Code:
public enum Action
	{ NOACTION, TAKE, USE, LOOK, TALK };
darf auch in einer eigenen .java-Datei stehen (muss aber nicht)

2. Das mit den Enums kannst du dir etwa so vorstellen:
Code:
public class Action {
    public static final Action ACTION = new Action();
    public static final Action TAKE = new Action();
    // ...
    private Action() {
    // ...
    }
}
Das kommt dir vermutlich bekannt vor...
Dem entsprechend muss der Zugriff incl. des Klassennamens stattfinden:
Code:
public class Enums{
   public static enum Action
   { NOACTION, TAKE, USE, LOOK, TALK };
}

public class Player{
   private Action action;
   
   public Player(){
      action = Enums.Action.NOACTION;
        }
}

Mit den static-imports [1] gibt es folgende ungetestete Möglichkeiten:
Code:
// Diese Version würde ich hier bevorzugen
import static package.falls.vorhanden.Player.*;
public class Player{
   private Action action;
   
   public Player(){
      action = Action.NOACTION;
        }
}

Code:
import static package.falls.vorhanden.Player.Action.*;
public class Player{
   private Action action;
   
   public Player(){
      action = NOACTION; // Hier sollte diese Kurzform funktionieren
        }
}

Hier ist noch was zum lesen: http://www.galileocomputing.de/artikel/gp/artikelID-152
1.2 Statische Imports
1.4. Aufzählungen und enum

[1] http://java.sun.com/j2se/1.5.0/docs/guide/language/static-import.html
 
G

Guest

Gast
hä sorry, ich kriegs nicht hin echt. hier:

Code:
public class ENums {

    public static enum Direction
    { LEFT, RIGHT, UP, DOWN }
    
    public static enum Event
    { DROP, DUMP }
}

und dann:

Code:
import static ENums.Direction.*; // oder ENums.*; oder oder.. ich hab alles mal versucht

public class X{
    
    // ...
    
    public void move(Direction dir){   // auch ENums.Direction geht nicht...
       // ...
    }
}

geht nicht, ich benutz netbeans und der sagt mir oben bei der import anweisung "package ENums does not exist"..
egal was ich schreib, auch wenn ich das static beim import weglasse. wieso denkt er dass das n package sein soll?
Geht das nur bei packages oder wie?
 

JavaFred

Aktives Mitglied
Warum zum Geier nestest Du mehrere enums in einer Klasse? Kannst Du nicht einfach ein enum Direction in einer Datei Direction.java machen und ein enum Event in einer Datei Event.java?

Direction.java:
Code:
public enum Direction
{
    LEFT, RIGHT, UP, DOWN;
}

Event.java:
Code:
public enum Event
{
    DROP, DUMP;
}

Anonymous hat gesagt.:
wieso denkt er dass das n package sein soll? Geht das nur bei packages oder wie?
Importieren kann man nur Namen aus benannten packages, ja. Jetzt sag nicht, alle Deine Klassen liegen im default-package?

Naja ohne das unnötige Nesten brauchst Du die imports jedenfalls überhaupt nicht. Du kannst die enums dann einfach benutzen wie andere Klassen auch.
 
G

Guest

Gast
achso, weil vorher gesagt wurde ich kann sie auch in eine Klasse packen. Ich wusste nicht, dass man das "nesten" nennt und das eher nicht so gut is in dem fall.

dass man nur vom package importieren kann wusste ich auch nicht :p meine dateien liegen schon im default package ja..

naja okay dann machs in nun direkt mit enum-klassen und dann wird das wohl auch klappen. danke
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Fats Waller Wofür stehen diese Konstanten im Java Labyrinth ? Java Basics - Anfänger-Themen 5
M Wie lassen sich Konstanten in Bedingung stellen? Java Basics - Anfänger-Themen 1
thor_norsk Symbolische Konstanten Java Basics - Anfänger-Themen 9
L Konstanten Java Basics - Anfänger-Themen 7
A SelectionSort bringt keine konstanten Ergebnisse Java Basics - Anfänger-Themen 4
F Erste Schritte Literale / Konstanten Java Basics - Anfänger-Themen 5
M Konstanten in einem Interface definieren Java Basics - Anfänger-Themen 1
M Enum: Zugriff auf Konstanten Java Basics - Anfänger-Themen 7
E wann welche Konstanten verwenden? Java Basics - Anfänger-Themen 7
Luk10 Frage zu globalen Konstanten Java Basics - Anfänger-Themen 11
T Variablen Verständnissfrage Konstanten Java Basics - Anfänger-Themen 6
S Dezimale Konstanten sind immer positiv oder null - was heisst das den genau? Java Basics - Anfänger-Themen 2
D Sind Enums typsichere Konstanten? Java Basics - Anfänger-Themen 15
M Konstanten in Java Java Basics - Anfänger-Themen 23
A Was ist performanter für Konstanten, enum oder static variablen Java Basics - Anfänger-Themen 5
C Konstanten zu einfachen Berechnungen unterhalb Main Methode Java Basics - Anfänger-Themen 19
P Klassen-konstanten durchlaufen Java Basics - Anfänger-Themen 9
S Viele Konstanten, EnumSet? Java Basics - Anfänger-Themen 3
D Frage zu Konstanten Java Basics - Anfänger-Themen 7
G static block und konstanten Java Basics - Anfänger-Themen 2
S Organisieren von Konstanten Java Basics - Anfänger-Themen 16
G Wohin mit Konstanten? Java Basics - Anfänger-Themen 12
F Konstanten Java Basics - Anfänger-Themen 36
K System.exit() - Konstanten ? Java Basics - Anfänger-Themen 2
M Konstanten ableiten und überschreiben Java Basics - Anfänger-Themen 2
Dilandau array aus konstanten definieren? Java Basics - Anfänger-Themen 6
Dimax Erste Schritte Generics von Profis leicht erklärt Java Basics - Anfänger-Themen 7
V Wer kann diesen Code leicht erklären Java Basics - Anfänger-Themen 8
D Hab mal eine Frage. ganz leicht wahrscheinlich :D Java Basics - Anfänger-Themen 6
G Problem bei Dateikopieren + leicht verändern Java Basics - Anfänger-Themen 7
M Java-Software so anbieten, dass sie leicht zu starten ist Java Basics - Anfänger-Themen 16
G GridBagLayout wie? Grundgerüst leicht komplex. Java Basics - Anfänger-Themen 2
T Benutzen des Bezeichners der Oberklasse Java Basics - Anfänger-Themen 4
S JSON einlesen und benutzen Java Basics - Anfänger-Themen 5
B Tess4j benutzen? Java Basics - Anfänger-Themen 13
G variable kopieren bzw. woanders benutzen Java Basics - Anfänger-Themen 6
O Java über cmd benutzen ? Java Basics - Anfänger-Themen 5
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
J 2 klassen benutzen Java Basics - Anfänger-Themen 5
X Wie Generics richtig benutzen ? Java Basics - Anfänger-Themen 5
Kirby.exe Methode aus Superklasse benutzen Java Basics - Anfänger-Themen 18
M Fragen zum Anlegen und Benutzen von Listen Java Basics - Anfänger-Themen 9
N Wie lerne ich neuen Code zu benutzen? Java Basics - Anfänger-Themen 6
O Array benutzen aber WIE? Java Basics - Anfänger-Themen 18
O Erste Schritte Scanner mehrere male benutzen (Konsole) Java Basics - Anfänger-Themen 7
M Ist es möglich den Login in eine Drittseite für den eigenen zu benutzen? Java Basics - Anfänger-Themen 1
M Klassen Funktionen aus anderen Klassen benutzen Java Basics - Anfänger-Themen 3
J Array Werte benutzen Java Basics - Anfänger-Themen 16
H GSON-Bibliothek für eigene Programme benutzen Java Basics - Anfänger-Themen 2
C system.out.printf mit streams benutzen Java Basics - Anfänger-Themen 7
A Eine Variable in verschiedenen Ereignisprozeduren benutzen Java Basics - Anfänger-Themen 7
S Erste Schritte Generische Klassen sind toll ....aber warum sollte ich das je benutzen? Java Basics - Anfänger-Themen 3
D Zusätzliche Packages benutzen? Java Basics - Anfänger-Themen 6
J Operator * benutzen Java Basics - Anfänger-Themen 3
S Objekt finden und benutzen Java Basics - Anfänger-Themen 3
Z HashMap richtig benutzen Java Basics - Anfänger-Themen 2
H Klasse bzw methode der Klasse in einer anderen Klasse benutzen Java Basics - Anfänger-Themen 4
T .jar Datei als Ordner benutzen/ Dateien aus .jar Datei auslesen Java Basics - Anfänger-Themen 3
A GUI Absturz nach 3x benutzen einer JComboBox Java Basics - Anfänger-Themen 11
J Projekt im anderen Projekt benutzen Java Basics - Anfänger-Themen 2
A ToString()-Methode richtig benutzen Java Basics - Anfänger-Themen 3
G einfache Leet-Übersetzung implementieren und benutzen Java Basics - Anfänger-Themen 14
B Wert aus TextFeld in Canvas benutzen Java Basics - Anfänger-Themen 0
D Klassen klassen variable benutzen Java Basics - Anfänger-Themen 3
TheSorm JScroolBar richtig benutzen Java Basics - Anfänger-Themen 8
B Fremde Klassen benutzen Java Basics - Anfänger-Themen 21
J String von anderen Klassen aus benutzen Java Basics - Anfänger-Themen 15
J HILFE Benutzen einer Klasse aus JRE System Library Java Basics - Anfänger-Themen 4
K CompareTo zwei mal benutzen klappt nicht. Java Basics - Anfänger-Themen 2
K Methoden als Klassen benutzen Java Basics - Anfänger-Themen 42
DaniSahne96 Methoden Variablen aus Methoden benutzen Java Basics - Anfänger-Themen 11
B Threads benutzen Java Basics - Anfänger-Themen 5
N Jar-File soll externe class-Datei benutzen Java Basics - Anfänger-Themen 8
A Mehrere Gegner sollen das gleiche Bild benutzen Java Basics - Anfänger-Themen 3
S [Applet] Objekte von init bei paint benutzen Java Basics - Anfänger-Themen 9
F DatagramSocket über das Internet benutzen Java Basics - Anfänger-Themen 14
S schwierigkeit mit in der verwaltungsklasse benutzen von toString() Java Basics - Anfänger-Themen 7
K Was benutzen anstatt this? Java Basics - Anfänger-Themen 9
N WinHTTP in Java benutzen Java Basics - Anfänger-Themen 6
K In MySQL Select Variablen aus Java Programm benutzen Java Basics - Anfänger-Themen 8
P Vererbung Basisklasse soll eigene Methode benutzen Java Basics - Anfänger-Themen 38
H Array benutzen Java Basics - Anfänger-Themen 27
F Wie kann man die toArray Funktion richtig benutzen? Java Basics - Anfänger-Themen 3
P Klassen von JavaZOOM benutzen (GPL)? Java Basics - Anfänger-Themen 2
R JScrollPane in JTextArea benutzen Java Basics - Anfänger-Themen 10
B Formel aus Datei einlesen und benutzen Java Basics - Anfänger-Themen 3
J Getter und Setter auch intern benutzen - guter Stil? Java Basics - Anfänger-Themen 31
B package benutzen Java Basics - Anfänger-Themen 6
F Sauberer Programmierstyle: Klassenvariaben in Methoden benutzen? Java Basics - Anfänger-Themen 5
S JLabel mehrmals benutzen Java Basics - Anfänger-Themen 4
G bereits erstellte Objekte benutzen Java Basics - Anfänger-Themen 7
M Variable aus Funktion in Hauptfenster benutzen Java Basics - Anfänger-Themen 5
Strahlungsleck [Erledigt]Ergebnisse des Ausgelesenen Verzweichnis verwerten/benutzen Java Basics - Anfänger-Themen 9
R Welches Tool soll ich benutzen? Java Basics - Anfänger-Themen 19
G Tasten in GUI-Applet benutzen Java Basics - Anfänger-Themen 3
G interne classen extern benutzen Java Basics - Anfänger-Themen 14
K Wie kann ich Schneiden, einfügen, kopieren benutzen ? Java Basics - Anfänger-Themen 4
Schandro Externe Bibliothek OHNE IDE benutzen Java Basics - Anfänger-Themen 5
D Programmierstil - Bei Vererbung welchen Typ benutzen? Java Basics - Anfänger-Themen 8
J Datei benutzen/öffnen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben