also wenn ich
public class X {
public class Y { int z ; }
}
habe und eine Instanz von Y bräuchte und das mit Reflection machen
will... wie mache ich dass dann? Ich stehe gerade ein wenig auf dem
Schlauch.
Gruss theo
> also wenn ich
>
> public class X {
> public class Y { int z ; }
> }
>
> habe und eine Instanz von Y bräuchte und das mit Reflection machen
> will... wie mache ich dass dann?
Y.class.getConstructor(X.class).newInstance(x) ?
Viele Gruesse,
Patrick
Kann die Lösung wirklich so einfach sein? Warum nicht X$Y :-)
Cheers,
Wolfgang
> Hi
>
> also wenn ich
>
> public class X {
> public class Y { int z ; }
> }
>
> habe und eine Instanz von Y bräuchte und das mit Reflection machen
> will... wie mache ich dass dann?
Class#getDeclaredClasses() vermutlich.
Jochen Theodorou schrieb:
Bei inneren Klassen gibt es implizit einen Konstruktor, der das äußere
Objekt, also eine Instanz von X, mit übergibt. Wusste ich bis jetzt auch
nicht ;) hab ein bisschen mit java.lang.reflect.Constructor rumgespielt
und mir den Konstruktor von Y angesehen.
Ich hab mal in der Klasse X eine createY-Methode geschrieben.
public Y createY()
{
Class c = Class.forName("X$Y");
Constructor con = c.getConstructors()[0];
return (Y) con.newInstance(this);
}
Damit funktioniert das was du willst. Wenn du das von Außen machen
willst, musst du halt statt this eine andere Instanz von X übergeben.
mfg
Andreas
so heisst natürlich die Klasse, das wusste ich schon
Gruss theo
... sag ja, ich steh auf dem Schlauch... danke ;)
Gruss theo
das äussere Objekt wird übergeben... eigentlich logisch, trotzdem...
sigh... mich grausts vor Groovy 1.7 wenn ich innere Klassen für Groovy
implementieren soll...
> Ich hab mal in der Klasse X eine createY-Methode geschrieben.
>
> public Y createY()
> {
> Class c = Class.forName("X$Y");
> Constructor con = c.getConstructors()[0];
> return (Y) con.newInstance(this);
> }
>
> Damit funktioniert das was du willst. Wenn du das von Außen machen
> willst, musst du halt statt this eine andere Instanz von X übergeben.
thx
Gruss theo
Es ist keine static nested class. Daher muss Y eine Instanz von X
übergeben werden - oder so ähnlich.