class dateien "einlesen" und objekte erzeugen

brasbat

Mitglied
hallo,
ich hab hier schon oft mitgelesen und immer mal wieder hilfreiche antworten gefunden 🙂 daher wende ich mich jetzt mal mit einer eigenen frage an euch:

ich hab ein kleines programm mit GUI. in dieser GUI hat man die möglichkeit verschiedene algorithmen auszuwählen um das gegebene problem zu lösen. diese algorithmen sind klassen, die alle von einer abstrakten klasse erben. innerhalb des quelltextes ist der statische typ also immer der der abstrakten klasse.

nun habe ich in der gui ein dropdownmenu in dem man den algorithmus auswählen kann. das problem ist halt, jedesmal wenn ein neuer algorithmus hinzukommt muss ich das einzeln in die gui einpflegen.

daher nun zu meiner frage: kann ich irgendwie vorher alle class-dateien in einem bestimmten ordner durchgehen, prüfen ob diese von der bestimmten abstrakten klasse erben (also mit instanceof oder so) und dann mittels dieser class-datei ein objekt erzeugen?
 
möglich ist das, Klassennamen aus Dateisystem lesen,
Class.forName() liefert die Klasse, in Class gibts Methoden wie newInstance(), prüfen auf Interface oder Oberklasse,

durchaus gängiges Verfahren, Plugin ist ein Stichwort
 
ok, nun hab ich noch ein kleines problem, was ich irgendwie noch nie hatte. hab mir einen filepointer auf die aktuelle class-datei erzeugt und möchte jetzt das verzeichnis bekommen in dem sie liegt, um dann anschließend mit list() alle dateien auflisten zu können:
Java:
URL url = getClass().getResource("DynamicProgramming_GUI.class");
		File f = new File(url.toString());
		File f2 = new File(f.getParent());
		System.out.println(f2);
		System.out.println(f2.isDirectory()); //liefert false
die letzte zeile liefert false, obwohl das doch irgendwie nicht sein kann
 
was ist denn die Ausgabe von f2? du wirst doch wissen was da auf der Festplatte los ist,
allgemein besteht die Möglichkeit, dass die Klasse in einem Jar liegt, dann wirds da schwierig mit Parent/ Directory & Co.
 
danke für die schnelle antwort slaterB 🙂

habs jetzt irgendwie hinbekommen. vielen dank

nur die erste zeil ersetzt durch:
Java:
String url = getClass().getResource("DynamicProgramming_GUI.class").getPath();
 
allgemein besteht die Möglichkeit, dass die Klasse in einem Jar liegt, dann wirds da schwierig mit Parent/ Directory & Co.
😀 das hab ich nun, nachdem alles in eclipse funktioniert, auch festgestellt. hast du dafür zufällig auch eine lösung parat?

da ich grad erst den sticky zum ersten post gelesen habe: ich möchte darauf hinweisen, dass es sich bei dem kram, zu dem ich gerade die fragen stelle nicht um eine hausaufgabe oder ähnliches handelt.
 
was willst du denn wissen?

Adressierungsprobleme innerhalb des Jars?
-> mal sehen

Dateien/ Verzeichnisse innerhalb des Jars auflisten?
-> kann ich nicht sagen

Denkanstöße:
- Text-Datei mit Infos wie Dateinamen, allerdings auch manuell zu verfollständigen, in oder außerhalb des Jars,
- Verzeichnis für Plugins real auf der Festplatte
 

Zurück
Oben