Hallo,
ich habe eine Frage an die Profis. Mein Ziel ist es, einen „Parser“ zu programmieren, der z.B. einen bestimmten „Input“ mit unterschiedlich parsen kann. (Z.B. ist der Input irgend ein Text und je nach ANwendugnszweck extrahiert dieser z.B. die Substantive oder Zahlen bzw was auch immer.
Ich wollte das eigentlich über ein Interface machen:
InterfaceParser {
public String parse (InterfaceDTO dataTransferObject);
}
das ich dann jeweils implementiere:
MyTextParser implements InterfaceParser
MyZalenParser implements InterfaceParser
Mein Problem ist nun das Übergeben der DTOs mit den Inhalten an die Parse Methode. Das sind einmal z.B. ein „DateiDTO“ einemal ein HTTPDTO etc, also gänzlich unterschiedliche Objecte die nur aus getter und setter Methoden bestehen. Diese implementieren das Interface InterfaceDTO.
Mag sein, dass ich das total falsch liege, kann das wirklich sein, dass ich dann wenn ich den Parser implementiere dann immer in den Parse Methoden erst die übergebenen InterfaceDTO Typen in die entsprechenden „echten“ Typen typecasten muss. Gibt es da nicht eine Typsichere Methode?
So muss es wohl sein?
MyTextParser implements InterfaceParser {
public parse(InterfaceDTO myFileDTO) {
FileDTO fileDTO = (FileDTO) myFileDTO
}
}
Warum geht folgendes nicht (das liefert einen Fehler in Eclipse)?
MyTextParser implements InterfaceParser {
public parse(FileDTO myFileDTO) {
und dann direkt weitearbeiten mit myFileDTO
}
}
FileDTO implementiert ja auch InterfaceDTO und ich dachte immer, dass ich dann wie oben geschriebe direkt in den Methodenparametern das konkrete Object verwenden (Und nicht das INteraface das ich typecasten muss).
Ich hoffe jemand versteht die Frage. Bin sehr dankbar für eine Antwort wie man dieses Problem löst.
Vielen DAnk und viele Grüße
Julian