![]() |
| | Themen-Optionen |
| | Nach oben #1 |
| Benutzer Registriert seit: 30.11.2004
Beiträge: 97
|
Hi ... kann man bei der Instanziierung eines Objketes via Reflexion auch einen Konstruktor mit Prametern aufrufen ? Bis jetzt hab ich es immer so gemacht: PHP-Code: Michael |
| | |
| | Nach oben #2 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.480
|
Warum kannst Du denn nicht anstatt "null" das angeben, was Du möchtest? Soll gar keine Lösungshilfe darstellen, sondern ist eine Frage an Dich *g* Muss erstmal verstehen, was da geschieht .. eventuell komme ich dann auf eine Idee Danke Dir .. |
| | |
| | Nach oben #3 |
| Gast
Beiträge: n/a
|
Ja, man kann: Code: try{
Class[] parameters = new Class[]{ String.class, Integer.class };
Object[] values = new Object[]{ "asdfasdf", new Integer(1234) };
Class c = Class.forName( "NameDerKlasse");
Constructor cons = c.getConstructor(parameters);
Klasse temp = (Klasse)cons.newInstance(values);
temp.doSomething();
}
catch( Exception ex ){
...
}
|
|
| | Nach oben #4 |
| Benutzer Registriert seit: 30.11.2004
Beiträge: 97
|
DANKE !! Das funzt ja richtig gut. Wenn ich das jetzt richtig sehe, darf man allerdings keinen Konstruktor haben, der einen simplen Datentyp erwartet (int, double ...), sondern muss dann die Wrapperklassen benutzen. ... aber damit kann ich leben ... DANKE nochmal !! Michael |
| | |
| | Nach oben #5 |
| Gast
Beiträge: n/a
|
Also in der Definition der Parameter (also Class[]) wäre man eigentlich frei (da man ja z.B. Integer.class oder Boolean.class verwenden könnte) aber, ja, bei der effektiven Übergabe der Werte ist man schon an die Wrapperklassen gebunden.. Aber das ist allgemein ein Schwachpunkt/eine Einschränkung der reflection api.. Falls du weitere Fragen zur reflection api hast, bitte hier posten, dann haben alle Leser den optimalen Zusammenhang zum Thema.. Greets |
|
| | Nach oben #6 | |||
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.480
| Zitat:
Irgendwie verstehe ich den "Übergang" von der ersten Aussage zu dieser hier nicht Zitat:
Zitat:
Weil man eben die primitiven Datentypen nicht direkt übergeben kann? Hm .. irgendwie wäre es mir ja manchmal fast Recht, wenn es gar keine primitiven Datentypen gäbe *g* Danke für die Infos. Grüße Ben. | |||
| | |
| | Nach oben #7 |
| Gast
Beiträge: n/a
|
Hmm.. hab mich falsch ausgedrückt.. und dazu noch falschen code geschrieben.. Ich meinte natürlich folgendes: Wenn man eine Methode / einen Konstruktor aufrufen will, der primitive Typen als Parameter annimt, dann muss man das so machen: Code: try{
Class[] parameters = new Class[]{ Long.TYPE };
Object[] values = new Object[]{new Long(System.currentTimeMillis())};
Class c = Class.forName( "java.util.Random");
Constructor cons = c.getConstructor(parameters);
Klasse temp = (Klasse)cons.newInstance(values);
temp.doSomething();
}
catch( Exception ex ){
...
}
Ich hoffe, du weisst jetzt was ich meine. Greets |
|
| | Nach oben #8 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.480
|
Ja, denke ich bin etwas weitergekommen. Ich verstehe allerdings diese Zeilen hier irgendwie nicht. Code: Class[] parameters = new Class[]{ Long.TYPE };
Object[] values = new Object[]{new Long(System.currentTimeMillis())};
Code: Long.TYPE Die zweite Zeile füllt dann das Array "values". Da dürfen nur "Objects" sein .. deshalb castest Du auch das Ergebnis von Code: System.currentTimeMillis() Ich frage mich jetzt .. warum überhaupt ein Array? :confused: Man braucht also eigentlich zwei Schritte, um einen durchzuführen, weil eben "long" & Co. primitiv sind ... ja? Danke nochmals Grüße Ben. |
| | |
| | Nach oben #9 |
| Gast
Beiträge: n/a
|
Die Frage "warum ein Array" ergibt sich aus den beiden folgenden Zeilen: Code: Constructor cons = c.getConstructor(parameters);
Klasse temp = (Klasse)cons.newInstance(values);
}
catch( Exception ex ){
...
}
|
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Insert-Macro für jEdit (Konstruktor, Getter, Setter einfügen) | pago | Literatur | 2 | 12.05.2005 09:09 |
| Insert-Macro für jEdit (Konstruktor, Getter, Setter einfügen) | pago | Projekte unserer Mitglieder | 1 | 11.05.2005 23:28 |