Innere Klassen zur Laufzeit Instanzieren

Status
Nicht offen für weitere Antworten.

Colenzo

Neues Mitglied
Hallo hab da ne ziemlich eklige Frage.

Ich weiß nicht wie ich an die Umgebende Instanz eines Objektes komme des Klasse ich nicht kenne.

Auf dem Screenshot vom Debugger sieht man das :
www.imagecross.com/image-hosting-view-14.php?id=8264screen.jpg

Bei der Variable Object o ist es bekannt das es eine umgebende Instanz gibt (this$0) aber im Code kann ich das nicht schreiben so.

Die Frage ist also wie greif ich auf o.this$0 korrekt zu?

Wie gesagt Typ der Klasse ist beim Compiliren nicht bekannt.

Sinn und Zweck ist von beliebiger Objekte zur Laufzeit Kopien der Instanz (nicht des Objekts mit clone() oder so) zu erstellen.

Und der Ganze Beispiel Code noch mit Semi Lösung und Problem:

Code:
class A {
		
	public int value;
	
	public B b = new B();
	
	public class B {
		
		public void print() {
			System.out.println(value);
		}
	}
}

 
public class SpeedTest {
	
	public static Object getMeANew(Object o) {
                Class c = o.getClass();  // der typ des Objekts		
		Class decl = c.getDeclaringClass();  // schauen ob es eine umgebende klasse gibt
		
		if (decl != null) {
			Constructor cons = null;			
			try {
				cons = c.getConstructor(decl); //Konstruktor suchen der umgebende klasse als Argument nimmt
			} catch (Exception e) {			
				e.printStackTrace();
			} 
			try {
				return cons.newInstance(decl.newInstance());  // neues Objekt mit ebenfalls neuem (aber FALSCHEM) umgebendem Objekt
			} catch (Exception e) {			
				e.printStackTrace();
			}	
		} else {		
			try {
				return c.newInstance();  //ganz normal neue Instanz
			} catch (Exception e) {			
				e.printStackTrace();
			}
		}
		return null;		
	}

      //Anwendung und Problem
  public static void main(String[] args) {			
		A a = new A();
		a.value = 100;
		a.b.print();  // Gibt 100 aus wie zu erwarten
		a.b = (A.B)getMeANew(a.b);
		a.b.print(); // Gibt 0 aus, sollte aber 100 ausgeben :/
	}

}
 
G

Gelöschtes Mitglied 5909

Gast
erstmal lol @ this$0

Sinn und Zweck ist von beliebiger Objekte zur Laufzeit Kopien der Instanz

du willst ne "kopie" machen indem du ein neues objekt erstellst?
- nimmt clone(), was spricht dagegen?

damit du auf die inner class zugreifen kannst musst du diese entweder static machen oder ein A objekt nehmen


den sinn versteh ich aber ehrlich gesagt nicht
 
S

SlaterB

Gast
wenn du schon mit Reflection arbeitest, dann solltest du doch wissen, wie du an Felder dynamisch rankommst:

Code:
class A {

	public int value;

	public B b = new B();

	public class B {

		public void print() {
			System.out.println(value);
		}
	}
}

public class SpeedTest {

	public static Object getMeANew(Object o) throws Exception {
		Class c = o.getClass(); // der typ des Objekts
		Class decl = c.getDeclaringClass();

		if (decl != null) {
			Field thisKomisch = c.getDeclaredField("this$0");

			Constructor cons = c.getConstructor(decl);
			return cons.newInstance(thisKomisch.get(o));

		} else {
			return c.newInstance(); // ganz normal neue Instanz
		}
	}

	// Anwendung und Problem
	public static void main(String[] args) throws Exception {
		A a = new A();
		a.value = 100;
		a.b.print(); // Gibt 100 aus wie zu erwarten
		a.b = (A.B) getMeANew(a.b);
		a.b.print(); // Gibt 100 aus
	}

}
 

Colenzo

Neues Mitglied
raiL hat gesagt.:
erstmal lol @ this$0

du willst ne "kopie" machen indem du ein neues objekt erstellst?
- nimmt clone(), was spricht dagegen?

damit die Felder die Initialwerte haben und nicht die des Quellobjekts

SlaterB hat gesagt.:
wenn du schon mit Reflection arbeitest, dann solltest du doch wissen, wie du an Felder dynamisch rankommst:

Ist das erste mal ;)
Und Danke.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Innere Klassen und UML Allgemeine Java-Themen 3
S Innere Klassen und die statische Methode access$x Allgemeine Java-Themen 5
M innere Klassen - EJB 2.x Allgemeine Java-Themen 6
F Innere Klassen Allgemeine Java-Themen 4
K Reflection:Zugriff auf innere Klassen Allgemeine Java-Themen 4
A Eventhandler: innere Klassen vs. "normale Klassen" Allgemeine Java-Themen 3
E Innere Klassen Allgemeine Java-Themen 3
I Collection - contains-Methode überschreiben (anonyme innere Klasse) Allgemeine Java-Themen 4
F Enums als innere Klasse sinnvoll? Allgemeine Java-Themen 3
S Zugriff auf innere Klasse Allgemeine Java-Themen 3
Q Der innere Typ von Generics? Allgemeine Java-Themen 3
S Innere Klasse: Zugriff auf äußere Variable Allgemeine Java-Themen 5
G innere Erzeuger- Klasse Allgemeine Java-Themen 5
O Verschachtelte Iteration: Innere Iteration abbrechen Allgemeine Java-Themen 3
W Innere Klasse und final Allgemeine Java-Themen 11
P innere Klasse auflösen Allgemeine Java-Themen 5
S Konzept: Innere Klasse, Anwendungsbeispiel? Allgemeine Java-Themen 4
B Innere Methoden Allgemeine Java-Themen 2
B Zugriff auf innere Methoden Allgemeine Java-Themen 4
I Mehrere Klassen mit den selben Daten Allgemeine Java-Themen 5
Zrebna Wie ermittelt man alle testbaren (zu testenden) Klassen in seinem Maven-Projekt? Allgemeine Java-Themen 23
8u3631984 Jacoco Testcoverage bei Abstracten Klassen in verschachtelten Modulen Allgemeine Java-Themen 6
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
B Ein Objekt einer Klasse mehreren anderen Klassen zur Verfügung stellen? Allgemeine Java-Themen 6
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
B Wie kann ich mein 8 Klassen Gebilde objektorientierter schreiben? Allgemeine Java-Themen 114
N abstracte klassen methoden Allgemeine Java-Themen 32
W Klassen Zugriff auf ein Textfile aus allen Klassen. Allgemeine Java-Themen 2
M Klasse durch Klassen Aufteilung verbessern, aber wo? Allgemeine Java-Themen 1
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
M Kann man Annotationen auf Klassen einschränken die ein Interface implementieren? Allgemeine Java-Themen 1
nonickatall Methoden Kann man Klassen/Methoden aus Variablen heraus aufrufen? Allgemeine Java-Themen 6
H Interface PluginSystem ClassNotFound exception für library Klassen Allgemeine Java-Themen 10
L Classpath Zur Laufzeit bestimmte Klassen in Classloader hinzufügen? Allgemeine Java-Themen 4
P Abstrakte Klassen vs. Interface Allgemeine Java-Themen 4
I Klassen aus Jar-Dateien aus anderem Ordner laden Allgemeine Java-Themen 3
D OOP Gemeinsamen ID-Raum für zwei Klassen implementieren Allgemeine Java-Themen 7
B Problem mit meinen Klassen Allgemeine Java-Themen 6
I Array Parameter mit 2 Klassen - NullPointerException Allgemeine Java-Themen 3
F ArrayList`s in Klassen mit Getter/Setter Allgemeine Java-Themen 8
F Code in Klassen bringen Allgemeine Java-Themen 4
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
F Klassen Verwendung abstrakter Klassen Allgemeine Java-Themen 9
W Variablenübergabe über mehrere Klassen Allgemeine Java-Themen 4
B Vererbung Interface und implementierende Klassen Allgemeine Java-Themen 8
D Klassen JLabels in anderen Klassen verwenden. Allgemeine Java-Themen 7
H Klassen LibGDX - Verschiedene Klassen als Value in einer Map Allgemeine Java-Themen 8
J Best Practice Objekt an alle Klassen verteilen ( Discord Bot ) Allgemeine Java-Themen 7
A Anonyme Klassen - Interface Allgemeine Java-Themen 5
ReinerCoder auf Klassen innerhalb eines package zugreifen Allgemeine Java-Themen 22
J Tetris Probleme bei Klassen Allgemeine Java-Themen 14
cool_brivk24 Klassen Klassen Aufruf Fehlgeschlagen Allgemeine Java-Themen 14
S Parametrisierte jUnit 5-Tests mit eigenen Datentypen/Klassen-Objekten als Test-Parameter Allgemeine Java-Themen 0
rentasad Design-Frage - Interfaces, Klassen, statische Methoden Allgemeine Java-Themen 3
S Klassen Abstrakte Klassen Allgemeine Java-Themen 5
T Log4J - Deaktivierung für einzelne Klassen Allgemeine Java-Themen 7
Tommy Nightmare Klassen Globale Klassen erstellen Allgemeine Java-Themen 7
X Klassen aus jar in jar Laden Allgemeine Java-Themen 1
S Klassen Klassen "virtuell" erstellen Allgemeine Java-Themen 5
J Aus mehreren Klassen ein Datei ausführbare machen Allgemeine Java-Themen 6
S equals-Methode bestimmer Klassen abfangen Allgemeine Java-Themen 2
M Klassen Eine Klasse in mehreren Klassen einbinden Allgemeine Java-Themen 11
Sin137 Struktur der Klassen & Package Allgemeine Java-Themen 2
G Klassen und interne Klassen Allgemeine Java-Themen 1
S Klassen übergeben Allgemeine Java-Themen 13
C Klassen und Konstruktor Allgemeine Java-Themen 2
S Classpath Wie kann ich Java-Library Klassen "verstecken"..? Allgemeine Java-Themen 4
A Java speech - 2 Klassen Allgemeine Java-Themen 1
V Wie kann ich die Fragen mit den anderen Klassen verbinden? Allgemeine Java-Themen 1
T Schlüsselworte mehrere public-Klassen in einem Paket Allgemeine Java-Themen 7
V Klassenname von allen Klassen mit einer bestimmten Eigenschaft bekommen Allgemeine Java-Themen 2
B Classpath Eclipse findet importierte Klassen nicht Allgemeine Java-Themen 1
C DBConnection als Methode in mehreren Klassen Allgemeine Java-Themen 4
C Arten von Klassen Allgemeine Java-Themen 3
7 Verbinden von Mehreren Klassen Allgemeine Java-Themen 29
A Klassen ein Interface aufzwingen Allgemeine Java-Themen 4
O Java-Obfuscator, welcher einzelne Methoden, Klassen und Ordnerstrukturen ausnehmen kann. Allgemeine Java-Themen 1
A also definition von klassen und string methoden und algorithmik Allgemeine Java-Themen 13
D Problem bei Vererbung abstrakter Klassen Allgemeine Java-Themen 6
M Interface Generische Klassen mit mehreren Typen überschreiben Allgemeine Java-Themen 0
L OOP Klassen-Design (static oder nicht?) Allgemeine Java-Themen 3
X Eigene Annotation - mit Bedingung für ganze Klassen oder Methoden Allgemeine Java-Themen 2
O Klassen Programm in Klassen unterteilt, werte werden nicht mehr übernommen Allgemeine Java-Themen 3
J C++ Projekt (QT) in Java mit Klassen (nicht imperativ) nutzen (BridJ? JavaCPP? SWIG? JNA? JNI?) Allgemeine Java-Themen 2
T Datentypen Eine Liste - verschiedenen Klassen - eine Abstracte Klasse Allgemeine Java-Themen 3
S .jar hat nicht alle Klassen ??? Allgemeine Java-Themen 10
S Polymorphie Polymorphismus bei Abstrakten Klassen Allgemeine Java-Themen 2
S Tool um mehrere Klassen in einer Klasse vereinen? Allgemeine Java-Themen 6
T Wie kann ich alle existierenden Java-Klassen anzeigen lassen? Allgemeine Java-Themen 10
Landei Welche Klassen fehlen im JDK? Allgemeine Java-Themen 18
S Kapselung Statische Helper Klassen Allgemeine Java-Themen 5
A Vererbung Klassen-Downcasting wirft ClassCastException Allgemeine Java-Themen 2
N Java Klassen mit ID Allgemeine Java-Themen 21
antonbracke Klassen Klassen gegenseitig laden Allgemeine Java-Themen 4
R SecurityManager für einzelne Klassen/Threads? Allgemeine Java-Themen 38
T Java Klassen aus externer .jar laden und ausführen Allgemeine Java-Themen 3
S JPA und Entity-Klassen: Wert ungültig Allgemeine Java-Themen 6
M OO / Klassen / Projektstruktur Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben