Informationen über abgeleitete Klassen

Status
Nicht offen für weitere Antworten.
M

Mewel

Gast
Hallo,

mein Problem ist folgendes:

Ich habe eine Basisklasse mit dem Namen Test, von dieser Klasse sind 2 weitere abegeleitet mit dem Namen TestA und TestB.

In einer anderen Klasse versuche in nun an TestA oder TestB heranzukommen. Dabei habe ich aber nur Informationen über die Klasse Test und einen ZusatzString der mir Informationen über die Klasse TestA oder TestB gibt.

Wie komme ich nun über die Basisklassen an TestA oder TestB ran?


Die Testklassen:

Code:
public abstract class Test {
  public String getInformation() {
    return "Test";
  }
}


public class TestA extends Test {

  public String getInformation() {
    return "TestA";
  }
}

public class TestB extends Test {

  public String getInformation() {
    return "TestB";
  }
}

Die Methode die TestA oder TestB zurückgeben soll:
information = "TestA"
baseClass = Test

Code:
public static Object getTestObject(String information, Class baseClass) {
  ...
  if(baseClass.equals(Test.class)) {
    <-- hier der gewünschte Code :D
  }
  ...
}

Im Endeffekt will ich eine Instanz von TestA oder TestB zurückgeben.

mfg Mewel


ps. falls einer sagt suchfunktion nutzen, ich habe ka unter welchem Stichpunkt ich da suchen sollte
 

Wildcard

Top Contributor
Wo ist jetzt das Problem? Wenn im String TestA steht erzeugst du eben eine entsprechende Instanz und gibst sie zurück.
 
G

Gast

Gast
Tst vllt. etwas unglücklich ausgedrückt, aber die Information ist nicht immer identisch mit dem Klassennamen oder dem Classpath.
 
M

Mewel

Gast
Du meinst ich soll einfach:

Code:
if(information.equals(TestA.getInformation()) {
  return new TestA();
}

Sicher ist das eine Möglichkeit, aber nicht die von mir angestrebte dynamische. So müsste ich immer, wenn ich eine neue von Test abgeleitete Klasse schreibe, eine neue if-Abfrage machen.

ps. die Methode getInformation() ist natürlich static ;)
 

Wildcard

Top Contributor
Wie stellst du dir den eine dynamische Lösung vor?
Den Classpath nach Klassen durchsuchen die Test erweitern und mit Reflection Instanzen erstellen? :autsch:
Gibt es einen Grund für dieses 'ungwöhnliche' Design?
 
M

Mewel

Gast
Der Grund ist, das ich die Informationen aus einer xml-Datei auslese die ich selber nicht beeinflussen kann.

Ich bin halt kein fan von ewig langen if-abfragen.

Mit dem Reflection Instanzen hast du schon recht, das muss ich machen.

Und wie ich mir die dynamische Lösung vorstelle wollt ich halt von euch wissen :D. Weil mir fällt da leider nix ein :/.
 

Wildcard

Top Contributor
Es währe ja kein Problem wenn diese 'information' dem gesuchten Klassenname entsprechen würde, da das aber wie du sagst nicht gegeben ist, hast du keine reelle Chance.
 
M

Mewel

Gast
Hrm, uncool, ich hatte halt an so eine art gedacht, das man von einer Klasse alle abegeleiteten bekommt und die dann durchiteriert. Aber ich habe dazu auch nichts gefunden.

Weil das Problem an sich ist ja nicht wirklich komplex, dachte halt das es da Lösungsmöglichkeiten gibt.
 

Wildcard

Top Contributor
Eine Klasse kennt aber ihre abgeleiteten Klassen nicht. Kann sie auch gar nicht.
Vergiss auch nicht das Klassen nicht immer als Dateien oder überhaupt lokal vorliegen.
Stell dir mal vor du würdest eine Liste aller Klassen bekommen die von JFrame abgeleitet sind :wink:
 

clemson

Bekanntes Mitglied
Mewel hat gesagt.:
Weil das Problem an sich ist ja nicht wirklich komplex, dachte halt das es da Lösungsmöglichkeiten gibt.

so unkomplex ist das gar nicht: was ist, wenn du alle abgeleiteten klassen von java.lang.Object haben willst...

für deinen fall könntest du dich ja auf ein package beschränken, alle klassen des packages laden und überprüfen, ob sie von einer bestimmten klasse abgeleitet sind bzw. ein bestimmtes interface implementieren...

EDIT: zu spät :cry:
 

Wildcard

Top Contributor
clemson hat gesagt.:
für deinen fall könntest du dich ja auf ein package beschränken, alle klassen des packages laden und überprüfen, ob sie von einer bestimmten klasse abgeleitet sind bzw. ein bestimmtes interface implementieren...
Man kann nicht alle Klassen eines packages laden.
 

Wildcard

Top Contributor
Du kannst dir alles anschauen was im Classpath ist, aber was ist wenn du Klassen aus einer DB oder dem Internet liest? Was ist wenn du über einen eigenen Classloader Klassen zur Laufzeit aus einem byte[] erzeugst?
Es gibt einen Grund warum die Klasse Package keine getClasses Methode hat :wink:
 

clemson

Bekanntes Mitglied
hmm, okay. du hast recht.

nur noch soviel: in diesem fall gehe ich davon aus dass die klassen lokal auf der festplatte liegen. und auch wenns kein schöner ansatz is, aber für diesen fall würds gehen...
 

Wildcard

Top Contributor
Richtig. Allerdings ist das ein ziemlicher hack und definitiv schlechter als ein zusätzliches 'if' in einer Factory.
So zumindest meine Meinung.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Laden von Informationen aus Dateien: Austauschbarkeit: 2 Dateien sinnvoll? Allgemeine Java-Themen 2
E Datei-Informationen Allgemeine Java-Themen 12
M Film Informationen aus Internet beziehen Allgemeine Java-Themen 4
M Informationen aus komplexen String parsen Allgemeine Java-Themen 13
B Suche Datenquelle für lizenz-informationen Allgemeine Java-Themen 5
C Informationen in eine Datei auslagern Allgemeine Java-Themen 19
C C-ähnlichen Code nach speziellen Informationen durchsuchen Allgemeine Java-Themen 2
J Welche Informationen werden beim Kompilieren gespeichert? Allgemeine Java-Themen 3
T Ausgabeumleitung in Datei + weitere Informationen Allgemeine Java-Themen 3
R Speichern von zusätzlichen Informationen Allgemeine Java-Themen 4
C Viele Informationen aus zwei Collections vergleichen Allgemeine Java-Themen 2
S System Informationen auslesen. Allgemeine Java-Themen 3
M Desktop-Informationen Allgemeine Java-Themen 2
M Email - Informationen auslesen Allgemeine Java-Themen 3
L Informationen aus mp3-Song Allgemeine Java-Themen 5
D Informationen speichern Allgemeine Java-Themen 12
M datei informationen auslesen Allgemeine Java-Themen 16
T Informationen zu Diensten Allgemeine Java-Themen 3
T wie speichert man Daten/Informationen? Allgemeine Java-Themen 8
Luma Zip-Archiv auslesen und Entry-Informationen auslesen Allgemeine Java-Themen 3
N Servlets: Formulardaten auslesen (POST) - mehr Informationen Allgemeine Java-Themen 4
kodela Datenübergabe über Buttons Allgemeine Java-Themen 8
W Jar-File Start nur über Terminal Allgemeine Java-Themen 13
A ByteArray über Socket Allgemeine Java-Themen 3
berserkerdq2 Text über einen Shape anzeigen (Scenebuilder) Allgemeine Java-Themen 1
I 2D-Grafik Vektor-Grafik über die Zwischenablage nach Adobe Illustrator transferieren Allgemeine Java-Themen 8
TheSkyRider Methode über DataInputStream "auslösen" Allgemeine Java-Themen 6
I OpenPDF erzeugt riesige PDFs, wenn Grafiken über PdfGraphics2D#drawImage gezeichnet werden Allgemeine Java-Themen 1
T Etikettendrucker über TCP-IP Allgemeine Java-Themen 1
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
B HTTP Allgemeine Fragen über Suchmaschine nutzen mit Java Allgemeine Java-Themen 20
torresbig Klasse mit extends Calendar über Methoden ändern (Hirnblockade) Allgemeine Java-Themen 7
B Liste ändern während Iteration über Diese? Allgemeine Java-Themen 16
Master3000 Java Konsole über Buffered Reader Zeilenweise auslesen ? Allgemeine Java-Themen 26
J Daten über serielle Schnittstelle empfangen Allgemeine Java-Themen 4
L Aufwandsabschätzung: Android-App Aufnahmefunktion (foto) und zweiter Ebene über dem Foto (teiltransparent) Allgemeine Java-Themen 6
M Registry Autostart Eintrag mit Java erstellen (über Windows cmd) Allgemeine Java-Themen 7
OSchriever Programm über Linux-Kommandozeile ausführen Allgemeine Java-Themen 20
J Namen von Methoden über Reguläre Ausdrücke bearbeiten Allgemeine Java-Themen 6
M Schnelleres Speichern von XML-Daten über URLConnection Allgemeine Java-Themen 4
M Keine weitere Eingabe in der Main möglich. Eventueller Ansatz über while. Allgemeine Java-Themen 8
Drachenbauer Wie kann eine vorgegebene Farbe über einen String erkannt werden? Allgemeine Java-Themen 11
W Variablenübergabe über mehrere Klassen Allgemeine Java-Themen 4
N Über einen Button in JavaFX ein Event über eine Pipeline schicken(Netty) Allgemeine Java-Themen 1
M Threads über Kommandozeile Allgemeine Java-Themen 5
david19 Software AE über Domain laufen lassen Allgemeine Java-Themen 0
Q Selbständig ActionEvent auslösen zum Daten senden über serielle Schnittstelle Allgemeine Java-Themen 7
T Problem mit externen Datenbankzugriff über SSH Tunnel Allgemeine Java-Themen 4
K Auf Dateiverzeichnis extern zugreifen (evtl über XML??) Allgemeine Java-Themen 22
C VisualVM oder Jconsole über Jolokia-Proxy Allgemeine Java-Themen 0
G USB-Pins über Java ansteuern Allgemeine Java-Themen 8
Ernesto95 Best Practice Localization über ResourceBundle Allgemeine Java-Themen 6
C Classpath Neue Klasse über einen Button ausführen Allgemeine Java-Themen 3
C Auslesen auslösen über Button-Click Allgemeine Java-Themen 8
M Fragen beantworten über Textfeldeingabe Allgemeine Java-Themen 5
AssELAss Best Practice Checksumme über jede Spalte zweier Tabellen und vergleichen Allgemeine Java-Themen 3
T Strings über Bluetooth zwischen PC,µc oder Samrtphone senden und empfangen Allgemeine Java-Themen 0
F Try/catch über ganze Klasse Allgemeine Java-Themen 9
kodela Eigenartige Datumsberechnung über GregorianCalendar Allgemeine Java-Themen 15
HarleyDavidson Best Practice Integer-Zahlenfolge über mehrere Programmstarts Allgemeine Java-Themen 7
T .jar über cmd ausführen (später dann batch) Allgemeine Java-Themen 6
F In OSX: Java-Programm über URI-Scheme aufrufen mit Parameter? Allgemeine Java-Themen 0
C Input/Output Zip Files über Socket senden und empfangen Allgemeine Java-Themen 6
M WebService - Zugriff auf Webservice Methode über Browser Allgemeine Java-Themen 1
C .jar File lässt sich nur über Konsole öffnen Allgemeine Java-Themen 1
L Videodateien über Java öffnen unabhängig vom Format Allgemeine Java-Themen 4
Thallius Hash über serialisiertes Objekt? Allgemeine Java-Themen 3
A Threads Lock über mehrere Abschnitte in verschiedenen Methoden Allgemeine Java-Themen 5
T Daten über port abfangen mit proxy server Allgemeine Java-Themen 12
M Eingabe von Arrays geht über gewünschte Anzahl hinaus Allgemeine Java-Themen 2
L Prüfen, ob Programm über 32bit oder 64bit Java ausgeführt wird Allgemeine Java-Themen 4
F Content-Disposition ermitteln über URL Allgemeine Java-Themen 2
ARadauer Checksumme über BigDecimal Werte Allgemeine Java-Themen 11
A Class Datei aus Verzeichnis über URLClassLoader laden Allgemeine Java-Themen 2
G Darstellung von Ergebnissen einer Dokumentensuche über eine JTable Allgemeine Java-Themen 19
S VLC + Lied über Java starten Allgemeine Java-Themen 17
M HTML-Code von Webseite über Browser oder Console auslesen?? Allgemeine Java-Themen 5
A Sinuston ausgeben und über Mikro Amplitude messen – machbar? Allgemeine Java-Themen 6
R Java-Progamm über Icon starten unter Windows Allgemeine Java-Themen 9
C Daten über URL an PHP verschicken Allgemeine Java-Themen 4
O Fragen über Fragen - Bei Änderung XML-Datei -> Anpassung GUI Allgemeine Java-Themen 7
aze Jar ausführen über Runtime.execute funktioniert nicht Allgemeine Java-Themen 4
S NoSuchMethodError beim Ausführen einer C Methode über JNI Allgemeine Java-Themen 5
H OOP Daten über TCP Allgemeine Java-Themen 5
Pastafari Iterator über nested HashMaps Allgemeine Java-Themen 7
R ListIterator über mehrere Arrays Allgemeine Java-Themen 13
G Interface Laden der Konfiguration über Interfaces sinnvoll? Allgemeine Java-Themen 28
D Player Objekt - Frame über Server anzeigen lassen. Allgemeine Java-Themen 3
B VoIP-Gespräche über Computer führen Allgemeine Java-Themen 3
S Jar-File startet nicht über doppelklick Allgemeine Java-Themen 2
C Java Programm über SSH starten Allgemeine Java-Themen 16
K Internetverbindung über PuTTy herstellen?! Allgemeine Java-Themen 9
C Kapselung Warum graift man auf Variablen nur über Methoden und nich direkt zu? Allgemeine Java-Themen 10
G Auf Kommandozeile über Processobjekt mit Outputstream Allgemeine Java-Themen 3
S Input/Output Binärdatei über Bytestreams Allgemeine Java-Themen 4
S Kommunikation von Core und GUI über Schnittstellen Allgemeine Java-Themen 2
J Explorer über Code starten Allgemeine Java-Themen 15
kodela Problem mit Kopieren über FileChannel Allgemeine Java-Themen 4
L Java und Javascript um Distanz über Google Maps zu berchnen Allgemeine Java-Themen 10
B UNIX Shell befehl über JavaCode ausführen Allgemeine Java-Themen 19

Ähnliche Java Themen

Neue Themen


Oben