args[] als statische Variablen speicher oder wie?

Status
Nicht offen für weitere Antworten.
C

Cheef

Gast
Hallo zusammen!

Wo soll ich die args[] die in der main übergeben werden abspeichern und wie komme ich an diese ran? Ich hab das momentan nur über statische Stringvariablen gelöst und wenn ein bestimmtes args[] kommt speichere ich dies in der statischen Variable.


wie habt ihr sowas gelöst???
 
S

SlaterB

Gast
> wenn ein bestimmtes args[] kommt
kommen die bei dir öfter? ;) kann doch nur ein Array beim Start kommen,
was du dann damit machst ist deine Sache, ob staitsch oder woanders ist doch die gleiche Frage bei jeder Art von Information im Programm,
sind die StartParameter was besonders?

ich habe das noch nie irgendwo abgespeichert, aber auch selten benutzt
 
G

Gast

Gast
z.b startparameter wären -batch (also batchlauf starten) oder -produktiv/test und solche auswahlen. oder -printhpath:......


diese daten verwende ich im Programm selbst an einer bestimmten stelle.

Dachte es gibt was komfortableren und besser als diese statischen Variablen.....
 
G

Guest

Gast
SlaterB hat gesagt.:
> wenn ein bestimmtes args[] kommt
kommen die bei dir öfter? ;) kann doch nur ein Array beim Start kommen,
was du dann damit machst ist deine Sache, ob staitsch oder woanders ist doch die gleiche Frage bei jeder Art von Information im Programm,
sind die StartParameter was besonders?

ich habe das noch nie irgendwo abgespeichert, aber auch selten benutzt

ist schon klar das es ein Array ist aber ich zerlege es mit einem Stringtokenizer und verwerte einzelne Elemente die ich brauche.


Beispiel:


Code:
    String add_parameter = new String();

        for (int i = 0; i < args.length; i++) {
            add_parameter += " " + args[i];
        }

        add_parameter = add_parameter.toUpperCase();

        // System.out.println(add_parameter.toString());
        StringTokenizer tokenizer =
            new StringTokenizer(add_parameter.toString(), ": ");     

        while (tokenizer.hasMoreTokens()) {
            String Response = tokenizer.nextToken();

            if (Response.equalsIgnoreCase("/PrinthPath")) {
                Printpath = tokenizer.nextToken();
              //  + ":" + tokenizer.nextToken();                          
              
            }
        }

wenn ich also /PrinthPath:"c:/Druckpfad" angebe. dann speichert er c:/Druckpfad als statische Variable ab....
 
S

SlaterB

Gast
es gibt technisch nur eine einzige alternative zu statischen Variablen: nicht-statische Variablen eines Objektes,
oder vielleicht noch Textdatei, Internetserver, DB, falls man sowas dazuzählen möchte ;)

also ich meine mit meinem blah blah: statisch oder nicht ist erstmal nicht unbedingt die Frage,
ob du die Daten frei irgendwo global als pures String[] ablegst
oder in einer hochkomplexen Registierung mit Anmeldung und Passwort/ Sichtbarkeit versteckst,
formatiert, geparst, geprüft und typisiert, das ist schon was anderes

alles ist denkbar,
naja, von mir nur blahblah und keine kontreten Beispiele ;)
 

Murray

Top Contributor
Ich versuche immer, nicht zuviel in der main zu machen, damit man die Klasse besser wiederverwenden kann. Daher werden irgendwelche Parameter in Instanzvariablen der Klasse gespeichert und im Konstruktor übergeben. Die main-Methode prüft nur die Anzahl und Syntax der Parameter und wandelt sie in die eigentlichen (getypten) Konstruktor-Argumente um. Insofern stellt sich die Frage nach der Speicherung der reinen Paramter-Strings nicht: die werden einmal ausgewertet und dann "vergessen".
 
G

Gelöschtes Mitglied 5909

Gast
gugg dir das mal an:
http://jargs.sourceforge.net/

// edit:

ich weiß nicht was du mit deinen statischen variablen hast, du machst in der main dein hauptobjekt, übergibts die parameter und gut is, zum parsen kannste dann wie gesagt jargs nehmen
 
G

Guest

Gast
Murray hat gesagt.:
Ich versuche immer, nicht zuviel in der main zu machen, damit man die Klasse besser wiederverwenden kann. Daher werden irgendwelche Parameter in Instanzvariablen der Klasse gespeichert und im Konstruktor übergeben. Die main-Methode prüft nur die Anzahl und Syntax der Parameter und wandelt sie in die eigentlichen (getypten) Konstruktor-Argumente um. Insofern stellt sich die Frage nach der Speicherung der reinen Paramter-Strings nicht: die werden einmal ausgewertet und dann "vergessen".

hast du ein bischen Code, weil momentan sagt mir deine Umsetzung wenig.
 

Murray

Top Contributor
An dein Beispiel angelehnt:

Code:
import java.io.File;
import java.util.Arrays;

public class Arg {
	
	private static final String STR_PRINTPATH = "/PrintPath";
	private static final String STR_COPIES = "/Copies";

	public static void main(String[] args) {
		
		File optPrintPath = null;
		int optNumberOfCopies = -1;
		
		boolean err = false;
		for ( String arg : args) {
			int colIdx = arg.indexOf( ":");
			if ( colIdx <= 0) {
				err = true;
			} else {
				try {
					String opt = arg.substring( 0, colIdx);
					String val = arg.substring( colIdx+1);
					if ( STR_PRINTPATH.equalsIgnoreCase( opt)) {
						optPrintPath = new File( val);
						continue;
					} else if ( STR_COPIES.equalsIgnoreCase( opt)) {
						optNumberOfCopies = Integer.parseInt( val);
						continue;
					}
				} catch ( Exception e) {
					System.err.println( "arg " + arg + " -> " + e);
				}
				err = true;
				break;
			}
		}
		
		if ( err) {
			System.err.println( "Parameter-Fehler!");
			System.err.println( "  Erwartet: Arg [" + STR_PRINTPATH + ":<path>] [" + STR_COPIES + ":<number>]");
			System.err.println( "  Erhalten: " + Arrays.toString( args));
			System.exit( 0);
		}
		
		Arg theArg = new Arg( optPrintPath, optNumberOfCopies);
		theArg.process();

	}
	
	private final File printPath;
	private final int numberOfCopies;
	
	public Arg( final File printPath, final int numberOfCopies) {
		this.printPath = (printPath == null) ? new File( "") : printPath;
		this.numberOfCopies = (numberOfCopies < 1) ? 0 : numberOfCopies; 
	}
	
	/*
	 * Default-Konstruktor verwendet Default-Werte
	 */
	public Arg() {
		this( null, -1);
	}
	
	/*
	 * Hier würde die eigentliche Arbeit passieren
	 */
	public void process() {
		/*
		 * Hier stehen die Paramter jetzt typsicher (als File bzw. int) in
		 * den Instanzvariablen zur Verfügung
		 */
		System.out.println( "process: printPath=" + printPath.getAbsolutePath() + ", numberOfCopies=" + numberOfCopies);
	}

}
 
G

Gelöschtes Mitglied 5909

Gast
mach dir doch ne Filemanager klasse, und übergebe ihr die args.

Code:
//main method
if (args.length != 1) // exit, print help
new FileManager(args[0]).showDirectory();

so in der art ;)
und zum parsen der args kannste jargs nehmen (siehe oben)
sieht alles sehr umständlich aus und die main sollte möglichst klein sein.
 

Murray

Top Contributor
raiL hat gesagt.:
die main sollte möglichst klein sein.
Grundsätzlich gebe ich dir da recht, allerdings bin ich der Meinung, dass das Parsen von irgednwelchen als String übergebenen Parameterlisten wirklich nur dann passieren sollte, wenn die Klasse direkt aus eine main-Methode gestartet wird (weil man eine main-Methode nunmal nur Strings und keine sauber getypten Argumente übergeben kann). Überall sonst sollte man die notwendigen Argumente sauber getypt als eindeutig definierte (Konstruktor-)Parameter übergeben. Deshalb trenne ich das Parsen von der Instanziierung. Und ob man für das Parsen eine fremde Lib verwendent, und/oder ob man das in eine zusätzliche, nur von der main aufgerufene Klassenmethode auslagert, hängt wohl in vom Umfang der Parameterliste ab.
 

Murray

Top Contributor
Gerade für so etwas kleines würde ich a) keine externe Lib bemühen wollen und b) der Meinung sein, dass man das noch guten Gewissens in der main-Methode unterbringen kann.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E String zerlegen aus args Java Basics - Anfänger-Themen 1
N Wozu nutzt man in der Main Methode das args Array? Java Basics - Anfänger-Themen 10
melly_ Verständnisfrage zu args Java Basics - Anfänger-Themen 3
J Frage zu: public static void main (String[]args) Java Basics - Anfänger-Themen 1
V Use of String[] args Java Basics - Anfänger-Themen 13
B Kommandozeile Übergangsmechanismus args Java Basics - Anfänger-Themen 5
dave253 Was bedeutet (String args[])? Java Basics - Anfänger-Themen 6
S Java String[]args Übergabeparameter Java Basics - Anfänger-Themen 2
N Erste Schritte StdIn vs args[] und Arrays vs "Einzelinitialisierung" Java Basics - Anfänger-Themen 6
T Double.parseDouble(args[0]) Java Basics - Anfänger-Themen 13
T Bitte um Hilfe bei Aufgabe: Long zahl = Long.parseLong(args [0]); Java Basics - Anfänger-Themen 3
L Frage zu args[] im Programm Java Basics - Anfänger-Themen 10
B ja ja schon wieder einer mit einer public static void main(string[] args) Frage... Java Basics - Anfänger-Themen 8
P args ausgeben Java Basics - Anfänger-Themen 3
R string aller args[] ? Java Basics - Anfänger-Themen 8
B func(Object ....args) korrekt weitergeben Java Basics - Anfänger-Themen 4
HoloYoitsu args-Parameter durchschleifen (Schnittstelle erweitern?) Java Basics - Anfänger-Themen 27
B Erste Schritte Java IDE schreibt "(String[] args)" Java Basics - Anfänger-Themen 5
B Socket, args Java Basics - Anfänger-Themen 22
V Erste Schritte Bedeutung von args Java Basics - Anfänger-Themen 10
E Methoden public static void main(String[] args) Java Basics - Anfänger-Themen 9
G Parameter an main(String[] args) übergeben Java Basics - Anfänger-Themen 6
H main args OutOfBounceExeption Java Basics - Anfänger-Themen 4
C String[] args Java Basics - Anfänger-Themen 4
F String args[] Frage... Java Basics - Anfänger-Themen 5
K Input/Output switch case - Parameterübergabe args[0] Java Basics - Anfänger-Themen 34
S Main Methode String... args Java Basics - Anfänger-Themen 2
Developer_X String[]args nutzen, wie? Java Basics - Anfänger-Themen 7
B Programmstart und Parameter/args Java Basics - Anfänger-Themen 4
M args[] während des Programmlaufes eingeben Java Basics - Anfänger-Themen 5
Ö args zuweisen Java Basics - Anfänger-Themen 2
B args[0] auf Anzahl Zeichen überprüfen Java Basics - Anfänger-Themen 29
M Exception args[0] Java Basics - Anfänger-Themen 16
D Args in andere Klasse transferieren Java Basics - Anfänger-Themen 2
V Wofür steht das args / arguments in Main Methode Java Basics - Anfänger-Themen 4
bugmenot args parsen Java Basics - Anfänger-Themen 3
C public static void main(String[] args) Java Basics - Anfänger-Themen 6
T String[] args ausgeben Java Basics - Anfänger-Themen 10
L Zugriff auf args[0] in "Test1View" in Netbeans - J Java Basics - Anfänger-Themen 2
G Was ist public static void main(String[] args)? Java Basics - Anfänger-Themen 12
S Effektive args[] Behandlung Java Basics - Anfänger-Themen 16
G args[] parameter übergeben. Java Basics - Anfänger-Themen 3
M Var-Args Java Basics - Anfänger-Themen 10
L feststellen ob args[2] gesetzt ist? Java Basics - Anfänger-Themen 2
M public static void main(String... args)<- Was bedeutet das? Java Basics - Anfänger-Themen 5
G args definieren in netbeans Java Basics - Anfänger-Themen 4
N public static void main(String args[]) Java Basics - Anfänger-Themen 6
D args und parameterübergabe Java Basics - Anfänger-Themen 8
G public static void main(final String[] args) Java Basics - Anfänger-Themen 4
X Was genau heißt "public static void main(String[] args) Java Basics - Anfänger-Themen 4
B public static void main (String[] args) ??? Java Basics - Anfänger-Themen 2
J Die statische Main-Methode ändert Instanzvariable? Java Basics - Anfänger-Themen 10
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
C Größte Zahl aus einem Array ermitteln(als statische Methode) Java Basics - Anfänger-Themen 31
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
V Variablen statische Variable einer Objektvariable zuordnen Java Basics - Anfänger-Themen 3
S Klassen statische Objekterzeugung vor Konstruktoraufruf??? Java Basics - Anfänger-Themen 6
Queiser Nicht statische Klassen Java Basics - Anfänger-Themen 6
B Statische Methode return funktioniert nicht. Java Basics - Anfänger-Themen 19
C nicht statische Methoden Java Basics - Anfänger-Themen 4
D statische generische Methoden Java Basics - Anfänger-Themen 3
D Statische Variablen/Methoden Java Basics - Anfänger-Themen 3
S Zufallszahl (Statische Attribute und Methoden) Java Basics - Anfänger-Themen 10
N Auf statische Methode zugreufen Java Basics - Anfänger-Themen 9
R Methoden Nicht statische Methode aus Main aufrufen Java Basics - Anfänger-Themen 2
F Privater Konstruktor und statische Methoden Java Basics - Anfänger-Themen 4
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
D Statische Objekte mit variablem Parameter Java Basics - Anfänger-Themen 1
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
F Statische Klasse => Flaschenhals? Java Basics - Anfänger-Themen 10
T Statische Arrays von Objekten Java Basics - Anfänger-Themen 2
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
B Java Programm ohne statische Main Methode aufrufen Java Basics - Anfänger-Themen 5
S Datentypen nicht lineare STATISCHE Datenstruktur? Java Basics - Anfänger-Themen 10
E statische Variable ändert sich Java Basics - Anfänger-Themen 7
A Statische Variable in Methoden Java Basics - Anfänger-Themen 7
P Klassen statische oder dynamische(?) Klasse Java Basics - Anfänger-Themen 3
A Nicht-statische Methode in einer statischen aufrufen Java Basics - Anfänger-Themen 10
M Wann statische Methoden/Attribute? Java Basics - Anfänger-Themen 2
M Statische Methoden in Interface/Abstrakte Klasse Java Basics - Anfänger-Themen 6
J statische Methoden auf eine LinkedList initialisieren? Java Basics - Anfänger-Themen 5
A statische Arraylist Java Basics - Anfänger-Themen 6
Q Variablen Statische Variablen Java Basics - Anfänger-Themen 8
J Unterschied zwischen statische und nicht statische Methoden? Java Basics - Anfänger-Themen 14
V OOP Statische Klassen-Attribute vererben Java Basics - Anfänger-Themen 4
K Statische Bindung Java Basics - Anfänger-Themen 6
B dynamische/statische Typen Java Basics - Anfänger-Themen 2
L Methoden Auf statische Methode einer anderen Klasse zugreifen, die Array zurückgibt Java Basics - Anfänger-Themen 3
S statische Methode nebenläufig Java Basics - Anfänger-Themen 2
R Aufruf statische Methode Java Basics - Anfänger-Themen 7
M Statische Methoden Java Basics - Anfänger-Themen 22
C Relativer Pfad - Statische Methode Java Basics - Anfänger-Themen 6
A Statische Methode "vererben" - Zwang durch annotation processor Java Basics - Anfänger-Themen 10
sqsh statische jlabels dynamisch verwalten Java Basics - Anfänger-Themen 2
S Statische Klassen/ Singleton Java Basics - Anfänger-Themen 13
E Statische Member können nicht vererbt werden? Java Basics - Anfänger-Themen 10
F Generische Typen auch für statische Methoden? Java Basics - Anfänger-Themen 13
B statische Variable Java Basics - Anfänger-Themen 10
M Statische und nicht-statische Funktionen: Desktop.browse(uri); Java Basics - Anfänger-Themen 4
A Stilfrage: statische Methoden und Attribute auf jeden Fall verhindern? Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben