Dynamisches abarbeiten von statischen Methode aus verschiedenen Klassen.

TomGrill

Mitglied
Ich habe mehrer Klasse die so aufgebaut sind:

Java:
public class KlasseA {
	public static void gibAus() {
		System.out.print("A");
	}
}


public class KlasseB {
	public static void gibAus() {
		System.out.print("B");
	}
}

Derzeit gibt es KlasseA, KlasseB, KlasseC, KlasseD, aber später können sich natürlich bei Bedarf noch weitere Klassen wie KlasseE, KlasseH etc. dazugesellen.

Aufrufende Klasse:
Java:
public class ProgrammStarten {
	public static void main(String[] args) {
		KlasseA.gibAus();
		KlasseB.gibAus();
		KlasseC.gibAus();
		KlasseD.gibAus();
	}
}

Ausgabe: ABCD

Wie programmiere ich die aufrufende Klasse ProgrammStarten so, dass automatisch alle existierenden Klassen, die KlasseX heißen, nacheinander die statische gibAus() Methode aufrufen. Wenn ich also vor dem nächsten Programmstart die KlasseE anlege. Soll die Ausgabe wie folgt lauten:

ABCDE

dabei möchte ich nicht nachträglich an der main() Methode per Hand folgende Zeile einfügen müssen:

Java:
KlasseE.gibAus();

oder wenn ich KlasseB und KlasseC lösche, soll die Ausgabe:

AD

sein.



Irgendwelche Ideen oder Vorschläge? Ich dachte daran alle Klassen, die eine gibAus() Methode haben in ein seperates Package zu packen und dann auszulesen welche Klassen in diesem Package sind, das ganze in ein Array zu speicher und dann per foreach durchzurattern. Gute Lösung? Wenn ja wie macht man das?


############

Oder etwas anders gefragt, wenn ich ein Variable mit dem Wert "KlasseB" habe. Wie kann ich eine Instanz der KlasseB erstellen ohne, dass ich den Wert der Variablen kenne, könnte ja auch "KlasseF" sein...
 
Zuletzt bearbeitet:
H

hüteüberhüte

Gast
Das geht nur mit Reflection - oder alle Klassen erben von einer gemeinsamen Klasse oder alle Klassen implementieren das gleiche Interface
 
H

hüteüberhüte

Gast
Java:
public interface NewInterface {
    public void gibAus();
}

public class KlasseA implements NewInterface {
    public void gibAus() {
        System.out.println("A");
    }
}

public class KlasseB implements NewInterface {
    public void gibAus() {
        System.out.println("B");
    }
}

for (NewInterface i : new NewInterface[]{new KlasseA(), new KlasseB()}) {
    i.gibAus();
}

Das wäre jetzt das maximale, was man aus Interfaces rausholen könnte. Mehr kann nur Reflection
 

TomGrill

Mitglied
ok Danke erstmal, das Problem ist nur, dass ich wenn ich KlasseC dazunehme hand an die for-Schleife legen muss und genau das soll ja dynamisch bzw. modular (wie ich jetzt durch paar Recherchen rausgefunden habe) funktioniere.

ServiceLoader könnte auch eine Lösung sein, ich probiers mal aus.
 

zzuegg

Mitglied
ok Danke erstmal, das Problem ist nur, dass ich wenn ich KlasseC dazunehme hand an die for-Schleife legen muss und genau das soll ja dynamisch bzw. modular (wie ich jetzt durch paar Recherchen rausgefunden habe) funktioniere.

ServiceLoader könnte auch eine Lösung sein, ich probiers mal aus.

Dann gehts nur mit reflection:
Java:
Reflections reflections = new Reflections("my.package");
        Set<Class<? extends MyClass>> applicationsToLoad = reflections.getSubTypesOf(MyClass.class);
        Class constructorVariables[] = new Class[]{ConstructorArg1.class,ConstructorArg2.class};
        Object constructorArguments[] = new Object[]{ConstructorArg1, ConstructorArg2};
        for (Class t : applicationsToLoad) {
            try {
                Constructor c = t.getConstructor(constructorVariables);
                MyClass newInstance = (MyClass) c.newInstance(constructorArguments);
                MyClass.gibAus()
            } catch (Exception ex) {
                Logger.getLogger(ApplicationManager.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

Di klassen die geladen werden sollen müssen MyClass extenden und im package my.package sein
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Generische Typen für dynamisches Formular Java Basics - Anfänger-Themen 3
J Dynamisches Array durch split()-Funktion? Java Basics - Anfänger-Themen 3
N Dynamisches Programmieren/Fibonacci Java Basics - Anfänger-Themen 1
J Polymorphie und Dynamisches Binden richtig nutzen Java Basics - Anfänger-Themen 11
O Schlange als dynamisches Feld - Aufwand Java Basics - Anfänger-Themen 16
S Klassen Objekt- Tabelle / Dynamisches 2Dimensionales Array für Objekte Java Basics - Anfänger-Themen 6
C Erste Schritte Dynamisches Array Java Basics - Anfänger-Themen 11
U Klassen Dynamisches Casten? Java Basics - Anfänger-Themen 39
X Methoden [GWT] Dynamisches Textfeld PopUp erstellen Java Basics - Anfänger-Themen 6
L dynamisches erzeugen von array Listen Java Basics - Anfänger-Themen 7
R dynamisches zweidimensionales Feld erzeugen Java Basics - Anfänger-Themen 8
A dynamisches Array - Index Liste Java Basics - Anfänger-Themen 2
maddin86 3 Dateien gleichzeitig speichern in dynamisches Benutzerverzeichnis (Windows) Java Basics - Anfänger-Themen 4
A dynamisches Array simulieren Java Basics - Anfänger-Themen 8
M Dynamisches Casten mal wieder Java Basics - Anfänger-Themen 4
A Dynamisches casten Java Basics - Anfänger-Themen 19
M Dynamisches und statisches binden Java Basics - Anfänger-Themen 17
M Dynamisches Binden Java Basics - Anfänger-Themen 8
M dynamisches Clipboard mit Buttons Java Basics - Anfänger-Themen 5
J Dynamisches/Statisches Binden ?? Java Basics - Anfänger-Themen 5
R dynamisches binden Java Basics - Anfänger-Themen 3
K dynamisches Array Java Basics - Anfänger-Themen 13
M Zweidimensionales dynamisches Array füllen Java Basics - Anfänger-Themen 2
Bernasconi dynamisches JDialog Java Basics - Anfänger-Themen 2
R Dynamisches Gegenerieren von Objekten Java Basics - Anfänger-Themen 25
P dynamisches Binden klappt nicht so recht Java Basics - Anfänger-Themen 7
S dynamisches array + konstruktor Java Basics - Anfänger-Themen 5
K dynamisches Array erzeugen Java Basics - Anfänger-Themen 5
O Enum Array Rekursiv abarbeiten Java Basics - Anfänger-Themen 44
F Array abarbeiten und bei Fehler zurück ins Array legen Java Basics - Anfänger-Themen 1
P Wie mehreren Threads Aufgaben zuweisen und abarbeiten lassen? Java Basics - Anfänger-Themen 15
D JFrame - Abarbeiten erzwingen Java Basics - Anfänger-Themen 3
A Threads anhand eines Tokens abarbeiten Java Basics - Anfänger-Themen 7
C Regelmäßigen Timer bei Zeitüberschreitung nacheinander abarbeiten Java Basics - Anfänger-Themen 2
L Threads nacheinander abarbeiten Java Basics - Anfänger-Themen 6
J Sequentielles Abarbeiten von Methoden Java Basics - Anfänger-Themen 11
M Aufruf von statischen Methoden einer anderen Klasse Java Basics - Anfänger-Themen 15
Junger_Basileus Celsius -> Fahrenheit / Strukturierung in statischen Methoden Java Basics - Anfänger-Themen 7
D Aufruf einer statischen Variable Java Basics - Anfänger-Themen 1
K Compiler-Fehler Objektmethode aus einer statischen Methode heraus aufrufen Java Basics - Anfänger-Themen 34
K Welchen Typ haben Variablen in Default-Methoden und in statischen Methoden in Schnittstellen? Java Basics - Anfänger-Themen 4
Shams Synchronized-Schlüsselwort bei Inkrementierung einer statischen Variable Java Basics - Anfänger-Themen 13
A Nicht-statische Methode in einer statischen aufrufen Java Basics - Anfänger-Themen 10
A Klassennamen im statischen Umfeld Java Basics - Anfänger-Themen 14
N OOP Zugriff auf eine Objekt innerhalb einer Klasse aus statischen Methoden Java Basics - Anfänger-Themen 9
S Gutes Design mit statischen oder Member-Methoden Java Basics - Anfänger-Themen 53
A Parameterübergabe zwischen statischen und nicht statischen Klassen Java Basics - Anfänger-Themen 6
hdi Lebensspanne von statischen Variablen Java Basics - Anfänger-Themen 7
A non-static Methode ausführen in statischen Kontext Java Basics - Anfänger-Themen 17
R Properties über statischen Pfad laden Java Basics - Anfänger-Themen 2
G Warum hat Java keinen statischen Konstruktor? Java Basics - Anfänger-Themen 5
G Problem mit nicht statischen Funktionen Java Basics - Anfänger-Themen 7
S Ergebnisse aus statischen Methoden weiterverwenden Java Basics - Anfänger-Themen 5
M Problem mit nicht statischen Methoden Java Basics - Anfänger-Themen 6
F Verwendung von this in statischen Kontext nicht möglich Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben