Hallo Forum,
ich habe mich vor einer Woche schon nach Selbigem erkundigt, aber da sich mein Problem nun noch erweitert hat, wollte ich nocheinmal nachfragen.
Ich habe eine Klasse, die eigentlich nur eine einzige wichtige Methode anbietet, als Argument verwendet sie zwei Strings und ein Flagarray (aus einem eigenen Enum-Typen). Die einzelne wichtige Methode ruft intern aber viele andere Methoden auf, da bei fast 2000 Zeilen Code das ganze sonst nicht mehr lesbar wäre. Nun habe ich ein Problem mit dem transportieren der Flags, denn das beste was mir einfallen würde wäre, das Array an jede Methode mitzugeben. Das würde ich, auf Grund der Lesbarkeit aber gerne vermeiden, da sich die Flags eines Aufrufs nie ändern.
Ist das übergeben der Flags in wirklich jeder Funktion denn nun wirklich die beste Lösung wenn ich selbige in wirklich beinahe jeder Funktion benötige? Denn wenn ich die Flags in einer statischen Varbiable ablege, werden die Flags ja nicht automatisch zurückgesetzt, das erscheint mir auch unpraktisch. Dazu passiert bei folgendem Aufruf:
natürlich, dass wenn beide Methoden unter Umständen parallel ablaufen, dass die Variable flags2 auf beide Abarbeitung der Methode angewandt werden, wenn ich die statische Variable zu beginn überschreibe. Das könnte ich zwar mit ThreadLocal verhindert, aber auch das erscheint mir nicht optimal.
Nun geht mein Problem aber noch weiter: Ich würde die Klasse gerne sowohl statisch als auch nicht-statisch anbieten. Also, dass ich mit:
in beiden Varianten das Gleiche heraus bekomme. Das würde ja grundsätzlich mit überladen funktionieren, allerdings geht das nicht, wenn bis auf das Atribut "static" die Methodenköpfe identisch sind. (Ich will die Flags weiterhin zulassen, um eine vorübergehende Änderung der Standardkonfiguration zuzulassen. Ist eine solche Umsetzung in Java denn überhaupt vorgesehen?
Danke für die Hilfe und viele Grüße, Rafael
ich habe mich vor einer Woche schon nach Selbigem erkundigt, aber da sich mein Problem nun noch erweitert hat, wollte ich nocheinmal nachfragen.
Ich habe eine Klasse, die eigentlich nur eine einzige wichtige Methode anbietet, als Argument verwendet sie zwei Strings und ein Flagarray (aus einem eigenen Enum-Typen). Die einzelne wichtige Methode ruft intern aber viele andere Methoden auf, da bei fast 2000 Zeilen Code das ganze sonst nicht mehr lesbar wäre. Nun habe ich ein Problem mit dem transportieren der Flags, denn das beste was mir einfallen würde wäre, das Array an jede Methode mitzugeben. Das würde ich, auf Grund der Lesbarkeit aber gerne vermeiden, da sich die Flags eines Aufrufs nie ändern.
Java:
public class MeineKlasse {
public static float meineMethode(String input1, String input2, Flags... flags) {
...
meineZweiteMethode(...);
...
}
private static int meineZweiteMethode(...) {
...
meineXXXMethode(...);
...
}
}
Ist das übergeben der Flags in wirklich jeder Funktion denn nun wirklich die beste Lösung wenn ich selbige in wirklich beinahe jeder Funktion benötige? Denn wenn ich die Flags in einer statischen Varbiable ablege, werden die Flags ja nicht automatisch zurückgesetzt, das erscheint mir auch unpraktisch. Dazu passiert bei folgendem Aufruf:
Java:
MeineKlasse.meineMethode(..., flags1);
MeineKlasse.meineMethode(..., flags2);
natürlich, dass wenn beide Methoden unter Umständen parallel ablaufen, dass die Variable flags2 auf beide Abarbeitung der Methode angewandt werden, wenn ich die statische Variable zu beginn überschreibe. Das könnte ich zwar mit ThreadLocal verhindert, aber auch das erscheint mir nicht optimal.
Nun geht mein Problem aber noch weiter: Ich würde die Klasse gerne sowohl statisch als auch nicht-statisch anbieten. Also, dass ich mit:
Java:
MeineKlasse foo = new MeineKlasse(flags1);
foo.meineMethode(...);
MeineKlasse.meineMethode(..., flags1);
in beiden Varianten das Gleiche heraus bekomme. Das würde ja grundsätzlich mit überladen funktionieren, allerdings geht das nicht, wenn bis auf das Atribut "static" die Methodenköpfe identisch sind. (Ich will die Flags weiterhin zulassen, um eine vorübergehende Änderung der Standardkonfiguration zuzulassen. Ist eine solche Umsetzung in Java denn überhaupt vorgesehen?
Danke für die Hilfe und viele Grüße, Rafael