Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
public boolean union(Recognizer a, Recognizer b, String input){
wie ihr seht, würde ich einen Recognizer a und b übergeben...
hier soll sozusagen eine beliebige Klasse reingeschrieben werden.
Und dann soll von beiden Recognizern ein new() erstellt werden.
also:
Java:
Recognizer a = new Recognizer();
nur wie übernehme ich das oben eingegebene und greife dann auf diese "andere" Klasse zu und erstelle dort ein neues objekt? Irgendwie funktioniert das nicht?
Also wenn ich das richtig verstehe, soll in der Methode union
ein Objekt von dem Typ erstellt werden der in a übergeben wurde
und der in b übergeben wurde.
Du kannst von Recognizer dann wahrscheinlich kein Objekt erstellen,
weil es abstrakt oder ein Interface ist.
Nun gibt es 2 Wege:
Weg 1 - Generics:
Java:
public boolean union<A extends Recognizer, B extends Recognizer> (A a, B b, String input)
und in union: Recognizer x = new A ();
Weg 2 - Reflection:
Deklaration von union bleibt wie es ist, aber in der Methode:
public boolean union(Recognizer a, Recognizer b, String input) throws Exception {
Recognizer x = a.getClass().newInstance ();
Recognizer y = b.getClass().newInstance ();
So hab ich das jetzt....
nur werd ich dann ja jetzt nach Recognizer a zuerst gefragt...
Da geb ich dann die Klasse ein...nur kommt dann cannot find symbol - variable
Also...
das ding ist, ich programmiere einen Lexer...zur erkennung von Sprachen!
Jetzt hab ich einen Lexer mit der Sprache L1 , das ist die Klasse "class MyFirstRecognizer"
Dann hab ich noch ne andere Klasse mit der SPrache L2 "class MySecondRecognizer"
So, jetzt möchste ich eine neue Klasse erstellen, "class MyCombiner" soll diese beiden Klassen sozusagen verbinden und überprüfen, ob mein string den ich eingebe, in einer der beiden Klassen akzeptiert wurde.
Jedoch soll die Combiner Klasse, falls ich noch eine andere Sprache dazutun würde allgemein alle erkennen.
deshalb: public boolean union(Recognizer a, Recognizer b, String input)
Du müsstest vlt. etwas mehr Source-Code posten.
Wenn ich das richtig verstehe, ist Recognizer ein
Interface mit Methoden zum Erkennen/Übersetzen von Sprachen.
Wozu willst du jetzt eine neue Instanz der übergebenen Klasse erstellen ???:L
Poste vlt. mal die Definition von Recognizer und MyCombiner(was du davon schon hast), das würde helfen.
verstehe. Dann würde ich aber den Weg 1 von zwergmulch vorziehen, da dieser genau
deine Anforderung abdeckt: "Diese Methode nimmt Unterklassen von Recognizer als
Parameter an."
Der Code sieht zwar erstmal wüster aus, beschreibt aber den Sachverhalt meiner
Meinung nach einfach besser.