Hallo,
ich habe folgende Klassen:
Was ich eigentlich tun wollte bzw. will:
Alle Klasssen meines Projekts erben von der Initializer Klasse, haben also die setup() Methode zur Verfügung.
Was die Setup Methode tun soll:
1. alle Fields der Klasse raussuchen
2. denen ein neues Objekt der betreffenden Klasse zuordnen.
Also bspw.
3. in die so initializierten Objekte reingehen,
4. in jedem davon die Fields angucken und gucken ob es klassenmässig gleich dem Ursprungsobjekt ist
5. Referenz in die Rückrichtung einrichten
Also im Prinzip diesen Code durchführen
Gleiches für extimanager und maingamemanager.
Reflection deshalb damit ich das nicht für jedes Feld extra hardcoden muss, sondern das halt "von selsbt" die vorhandenen Felder erkennt, initializiert und die hin und rückverbindung herstellt.
Habe den oben genannten Code.
Nur fehlt mir der Part wie man die Felder der klasse initializiert (also wie das =new ...(); hinkriegt).
Ob der Rest überhaupt richtig ist oder funktioniert, kann ich auch nicht beurteilen.
Kann mir da Jemand weiterhelfen?
Und ja, ich weiß, ich käme ohne Reflection aus.
Aber ich würde es gerne mal lauffähig mit Reflection hinkriegen
ich habe folgende Klassen:
Java:
import java.lang.reflect.Field;
public class Initializer {
public void setup() {
try {
String thisClassName = this.getClass().getSimpleName();
String otherClassName = "";
Field[] thisfields = this.getClass().getDeclaredFields();
for (Field thisfield : thisfields) {
Field[] otherfields = thisfield.getType().getDeclaredFields();
for (Field otherfield : otherfields) {
otherClassName = otherfield.getType().getSimpleName();
System.out.println("thisname=" + thisClassName + "; otherClassName=" + otherClassName);
if (thisClassName == otherClassName) {
otherfield.set(thisfield, this);
}
}
}
} catch (Exception e) {
}
}
}
Java:
public class GameflowManager extends Initializer {
LoginManager loginmanager;
MaingameManager maingamemanager;
ExitManager exitmanager;
public static void main(String[] args) {
new GameflowManager();
}
public GameflowManager() {
setup();
System.out.println(loginmanager+"");
}
}
Java:
public class LoginManager extends Initializer {
GameflowManager gameflowmanager;
public LoginManager() {
}
}
Was ich eigentlich tun wollte bzw. will:
Alle Klasssen meines Projekts erben von der Initializer Klasse, haben also die setup() Methode zur Verfügung.
Was die Setup Methode tun soll:
1. alle Fields der Klasse raussuchen
2. denen ein neues Objekt der betreffenden Klasse zuordnen.
Also bspw.
Code:
loginmanager=new LoginManager();
3. in die so initializierten Objekte reingehen,
4. in jedem davon die Fields angucken und gucken ob es klassenmässig gleich dem Ursprungsobjekt ist
5. Referenz in die Rückrichtung einrichten
Also im Prinzip diesen Code durchführen
Code:
loginmanager=new LoginManager();
loginmanager.gameflowmanager=this;
Reflection deshalb damit ich das nicht für jedes Feld extra hardcoden muss, sondern das halt "von selsbt" die vorhandenen Felder erkennt, initializiert und die hin und rückverbindung herstellt.
Habe den oben genannten Code.
Nur fehlt mir der Part wie man die Felder der klasse initializiert (also wie das =new ...(); hinkriegt).
Ob der Rest überhaupt richtig ist oder funktioniert, kann ich auch nicht beurteilen.
Kann mir da Jemand weiterhelfen?
Und ja, ich weiß, ich käme ohne Reflection aus.
Aber ich würde es gerne mal lauffähig mit Reflection hinkriegen