Cheatboy Geschrieben 10. März 2010 Geschrieben 10. März 2010 Hallo liebe Community, kaum freut man sich mal, weil man auf eine geniale Idee gekommen ist und dann merkt man, dass es doch nicht so einfach geht. Deshalb wende ich mich einfach mal schnell an euch. Gibt es den eine Möglichkeit einer Methode "dynamische" Objekt-Parameter zu vergeben? Damit meine ich, dass es der Methode egal ist von welchem Objekt dieses Parameter stammt und er es einfach weiterreicht. Vielen Dank für Eure Hilfe. Cheatboy Zitieren
kingofbrain Geschrieben 10. März 2010 Geschrieben 10. März 2010 Du hast echt ein seltenes Talent, unverständliche Fragen zu stellen. Ich versuche mal eine Interpretation: Du willst eine Methode, die einen Parameter übernimmt. Dieser Parameter soll von jedem möglichen Typ sein (java.util.ArrayList, java.awt.Panel, java.lang.String, my.personal.package.Class, ...). Wenn ja, dann: public void foo(Object bar) Dann kannst Du alles reinstecken, was Object ist (und dank autoboxing seit Java 1.5 sogar geboxte Primitives). Versuch doch bitte unabhängig davon, ob ich richtig geraten habe oder nicht, Deine Fragen noch mal zu lesen, bevor Du sie abschickst. Und dann tust Du mal so, als würdest Du Dein Problem nicht kennen. Und dann versuchst Du, zu begreifen, was Du willst. Und dann formulierst Du die Frage nochmal und startest am Beginn des Absatzes. Peter Zitieren
Ulfmann Geschrieben 10. März 2010 Geschrieben 10. März 2010 Ich begreife dies (auch) als Frage nach variablen Parametern. Du weißt also zur Laufzeit nicht, von welchem Typ der Parameter ist, der in eine bestimmte Methode soll? Nach meinem Kentnissstand muss die Signatur einer Methode immer eindeutig sein. Für jede weitere Überladung musst Du sie neu implementieren. Die Version mit Object als (einziger) "gemeinsamer Nenner" der Parameter-Kandidaten halte ich für ziemlich dünnes Eis, als Notlösung aber sicherlich möglich. Zitieren
Cheatboy Geschrieben 10. März 2010 Autor Geschrieben 10. März 2010 So, ich habe hier eine Methode in meinem Interface. Dann habe ich meine verschiedenen Objekte, bsp. Klasse1 objekt1 = new Klasse1(); Klasse2 objekt2 = new Klass2(); Klasse3 objekt3 = new Klasse3(); So, wenn ich nun Klasse1 als Parameter übergeben möchte wäre es ja public void blabla(Klasse1 obj){...} Nun müsste ich jedoch für meinen Fall mit mehrere Objekt-Parametern arbeiten, welches jedoch in meiner Situation extreme Verwirrung in den Code bringen würde! KlasseM.java KlasseM implements Interfaces[...] public String gefahrenpotential(int i, Klasse1 obj1) { switch(i) { case 1: blablabla case 2: blablabla case 3: blablabla } } Klasse1.java Klasse1 extends KlasseM implements Interfaces[...] { public String gefahrenpotential() { //"Identifikationsnummer" wird vergeben int i = 1; //Objekte werden benötigt, damit SuperMethode richtigen Wert ermitteln kann MainClass tp = new MainClass(); (!!Klasse nicht im beispiel) Klasse1 objekt1 = tp.setValues(new Klasse1()); return super.gefahrenpotential(i, objekt1); } } Klasse2.java Klasse2 extends KlasseM implements Interfaces[...] { public String gefahrenpotential() { //"Identifikationsnummer" wird vergeben int i = 2; //Objekte werden benötigt, damit SuperMethode richtigen Wert ermitteln kann MainClass tp = new MainClass(); (!!Klasse nicht im beispiel) Klasse1 objekt2 = tp.setValues(new Klasse1()); return super.gefahrenpotential(i, objekt2); <--- Da liegt das Problem, Parameter schreiben ja fest das, dass Objekt von der Klasse1 kommen muss! Parameter für jede einzelne Klasse möchte ich jedoch nicht erstellen } } Zitieren
lbm1305 Geschrieben 10. März 2010 Geschrieben 10. März 2010 So, ich habe hier eine Methode in meinem Interface. Dann habe ich meine verschiedenen Objekte, bsp. Klasse1 objekt1 = new Klasse1(); Klasse2 objekt2 = new Klass2(); Klasse3 objekt3 = new Klasse3(); So, wenn ich nun Klasse1 als Parameter übergeben möchte wäre es ja public void blabla(Klasse1 obj){...} Nun müsste ich jedoch für meinen Fall mit mehrere Objekt-Parametern arbeiten, welches jedoch in meiner Situation extreme Verwirrung in den Code bringen würde! Lösung 1: object-Array übergeben, dieses durchlaufen, Typen casten Lösung 2: Ich weiß nicht, ob dies in java möglich ist. Im .NET gibt es ein reserviertes Wort "params". Dies ermöglicht eine variable Anzahl an Parametern zu übergeben. public void DoSomething(params object[] objects) Unterschied zu Lösung 1: Ich muss hier nicht das Array erzeugen, sondern kann die Parameter direkt in die Methode geben. Zitieren
Jobe2009 Geschrieben 10. März 2010 Geschrieben 10. März 2010 Du lässetdoch die Klassen (Klasse1, Klasse2 und Klasse3) von einer anderen Klasse (mit namen "MKlasse") erben (extends). Der Methoda blabla muss dann ein Objekt vom Typ "MKlasse" übergeben werden: public void blabla(MKlasse obj) in der Methode kannst du dann mit "instanceof" den Typ abfragen. Zitieren
Cheatboy Geschrieben 11. März 2010 Autor Geschrieben 11. März 2010 So vielen Dank für die vielen konstruktiven Lösungsvorschläge! Habe mich dann schlussendlich für die Lösung1.) von lbm1305 entschieden mit dem Casten und siehe da: es klappt Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.