reflection und felder

sinclair

Aktives Mitglied
hallo leute

wir nehmen gerade reflections durch, die aufgabe ist folgende, man sollte irgend ein objekt einer Methode übergeben, dann sollte die Methode deren felder ausgeben und deren Methoden.
nun, weiss ich nicht so recht weiter, es gibt viel im netz, allerdings auch irgendwie nicht überschaubar..
könnte jemand mir unter die arme greifen?
danke^^
 

sinclair

Aktives Mitglied
hallo
sorry, mein fehler, habe sogar jetzt das Problem gelöst.
eine frage bleibt:
für was braucht man das reflectionszeug? um ehrlich zu sein, schien mir- das mein leherer selber nicht so recht wusste, für welchen fall man das braucht.
folgend mein code:
Java:
private void getFields(Object o) throws ClassNotFoundException
	{
		String klassenName = o.getClass().getSimpleName();
		Class myclass = Class.forName(klassenName);
		Field[] field = myclass.getDeclaredFields();
		for (int i = 0; i < field.length; i++)
		{
			System.out.println(field[i].getName());
		}
 

sinclair

Aktives Mitglied
Ich sehe den Vorteil noch nicht so recht, aber we will see.. vllt in den nächstenwochen..
andere frage:
ich möchte gerne die werte der membervariabeln ausgeben, allerdings bleibt meine Konsole leer:
Java:
private void getFields(Object o) throws ClassNotFoundException,
			IllegalArgumentException, IllegalAccessException
	{
		String klassenName = o.getClass().getSimpleName();
		Class myclass = Class.forName(klassenName);
		Field[] field = myclass.getDeclaredFields();
		for (int i = 0; i < field.length; i++)
		{
			String name = field[i].getName();
			Object value = field[i].get(o);
		    System.out.printf("Variablen name: %s, Field value: %s%n", name, value);
		}
was mach ich da falsch?
 

sinclair

Aktives Mitglied
andere frage:
wie kann ich in meinem Beispiel vergleichen ob es ein primitiver Datentyp ist oder nicht??
meine Idee ist, wenn das object, für wen ich die membervariabeln ausgebe, was ist wenn dieses object ein weiteres object hat usw???
dann möchte ich gerne den ganzen baum ausgeben..
 

Flown

Administrator
Mitarbeiter
Stichwort Rekursion

EDIT: Achja prüfen auf Primitive Datentypen:

Java:
int i = 2;
System.out.println(int.class.isPrimitive());
 
Zuletzt bearbeitet:

sinclair

Aktives Mitglied
hallo
danke.
folgende neue problematik:
Java:
public class Mensch
{
	public String name = "name";
	public int alter =16;
	public String[] woerter =
	{ "abc", "def" };
	List<String> l = Arrays.asList(woerter);
}
wie man sieht, habe ich ein array in dieser klasse, später auch eine arraylist. meine vorstellung war diese, dass ich einfach den inhalt des arrays ausgebe bzw. der arraylist.
folgend nochmals die funktion, die für diese aufgabe zuständig ist.
Java:
private void getFields(Object o) throws ClassNotFoundException,
			IllegalArgumentException, IllegalAccessException,
			NoSuchFieldException, SecurityException
	{
		String klassenName = o.getClass().getSimpleName();
		Class myclass = Class.forName(klassenName);
		Field[] field = myclass.getDeclaredFields();
		for (int i = 0; i < field.length; i++)
		{
			String name = field[i].getName();
			Object value = field[i].get(o);
			System.out.println("Variablen-werte =" + name + value);
			if (!field[i].getClass().isPrimitive())
			{
				getFields(value) ;
			}
		}
	}
etwas komisches ist passiert:
wenn ich im if-teil auf ein not überprüfe, gibt es eine exception, wenn ich das not weglasse,, wird mir die arraylist ausgegeben, für mich unverständlich, da das ja eigentlich passieren müsste, wenn ich ein not im if setze und wenn der fall eintritt.
ich hoffe ihr habt mich verstanden^^..
fall 1 ohne not im if print ausgabe:
Variablen-werte =namename
Variablen-werte =alter16
Variablen-werte =woerter[Ljava.lang.String;@19fc4e
Variablen-werte =l[abc, def]
das Array wird nicht geprintet.
fall 2 mit not im if:
Variablen-werte =namename
Exception in thread "main" java.lang.ClassNotFoundException: String
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
da wird der Name geprintet, allerdings alles andere nicht...
 
Zuletzt bearbeitet:

sinclair

Aktives Mitglied
habe was gemacht^^
Java:
for (int i = 0; i < field.length; i++)
		{
			field[i].setAccessible(true);
			String name = field[i].getName();
			Object value = field[i].get(o);
			if (field[i].getClass().isArray())
			{
				for (int j = 0; j < Array.getLength(field[j]); j++)
				{
					System.out.println("Variable und werte" + " " + field[j]);
				}
			} else
			{
				System.out.println("Variabeln und werte =" + " " + name + " "
						+ " " + value);
			}
		}
ausgabe:
Variabeln und werte = name name
Variabeln und werte = alter 16
Variabeln und werte = woerter [Ljava.lang.String;@41675ec4
Variabeln und werte = l [abc, def]
das Array will es trotzdem nicht printen, ich wäre unheimlich dankbar, wenn sich jemand das anschauen könnte.
 

arilou

Bekanntes Mitglied
Ohne das jetzt genau geprüft zu haben, irritiert etwas, dass du manchmal
field
und manchmal
field[j]
hast. Ich glaube, da must du nochmal drüber nachdenken, was da nun was ist.

Die Schleife soll wohl eigentlich bis getLength(field[i]) gehen,
und ausgegeben werden sollte wohl field[j], oder?
 
Zuletzt bearbeitet:

sinclair

Aktives Mitglied
hallo
um des rätsels lösung willen und das ich unabgeschlossene Themen hasse, folgend die lösung:
Java:
Class myclass = Class.forName(klassenName);
		Field[] field = myclass.getDeclaredFields();

		for (int i = 0; i < field.length; i++)
		{
			field[i].setAccessible(true);
			String name = field[i].getName();
			Object value = field[i].get(o);

			if (value.getClass().isArray())
			{
				System.out.println("test");
				for (int j = 0; j < Array.getLength(value); j++)
				{
	Object p =Array.get(value	, j);
					System.out.println(p);
				}
			} else
			{
				System.out.println("Variabeln und werte =" + " " + name + " "
						+ " " + value);
			}

		}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Reflection: Suche Feld + in Unterklassen Java Basics - Anfänger-Themen 7
B Reflection ändern von Objekten in Objekten Java Basics - Anfänger-Themen 12
G Vererbung Sicherheitslücke? Reflection sieht members, die nicht sichtbar sein sollten?! Java Basics - Anfänger-Themen 11
B .class-File mit Reflection auslesen Java Basics - Anfänger-Themen 8
X Parameterübergabe per Reflection Java Basics - Anfänger-Themen 10
U Reflection Benutzung Java Basics - Anfänger-Themen 2
J Reflection Java Basics - Anfänger-Themen 6
B Reflection Java Basics - Anfänger-Themen 8
S Datentypen Reflection Cast anhand eines Strings? Java Basics - Anfänger-Themen 7
X reflection api Java Basics - Anfänger-Themen 5
R Alle Klassen ermitteln, die Interface implementieren / Reflection Java Basics - Anfänger-Themen 51
lumo java reflection Java Basics - Anfänger-Themen 7
J Reflection Java Basics - Anfänger-Themen 2
J Reflection Java Basics - Anfänger-Themen 3
P Reflection - Class Not Found Exception Java Basics - Anfänger-Themen 3
A Frage zu Reflection Java Basics - Anfänger-Themen 8
A abgeleitete Klassen mit Reflection holen Java Basics - Anfänger-Themen 2
M Reflection Java Basics - Anfänger-Themen 8
W Problem bezüglich reflection Java Basics - Anfänger-Themen 11
S verschiede constructoren über reflection Java Basics - Anfänger-Themen 3
V Reflection API - getter und setter Java Basics - Anfänger-Themen 7
JFeel-x Frage zu reflection Java Basics - Anfänger-Themen 12
J Reflection Basic Java Basics - Anfänger-Themen 26
C Reflection Exceptions behandeln Java Basics - Anfänger-Themen 6
T von Reflection zum Thread? Java Basics - Anfänger-Themen 5
G Vorteile Reflection bezüglich MVC-Pattern Java Basics - Anfänger-Themen 9
G Reflection - Klasse laden aus anderem Verzeichnis Java Basics - Anfänger-Themen 4
L Reflection-fehlermeldung Java Basics - Anfänger-Themen 12
E Klassenaufrufe dynamisch mit Reflection Java Basics - Anfänger-Themen 4
S wer oder was ist reflection? Java Basics - Anfänger-Themen 11
U HILFE! - per ActionListener Felder enablen....... Java Basics - Anfänger-Themen 5
M Werte in Felder speichern und geordnet ausgeben Java Basics - Anfänger-Themen 8
A Felder: arithmetisches und geometrisches Mittel Java Basics - Anfänger-Themen 3
L Datentypen Deklarierte Felder einer Generic Klasse bestimmen Java Basics - Anfänger-Themen 7
Elyt Bei Monopoly werden Felder übersprungen Java Basics - Anfänger-Themen 2
L Listen und Felder Java Basics - Anfänger-Themen 2
neerual Int-Felder erzeugen Java Basics - Anfänger-Themen 16
P Felder König array Java Basics - Anfänger-Themen 6
T Art 4 Felder Matrix Memory Java Basics - Anfänger-Themen 2
P Zugriff auf Felder in ArrayList Objekten Java Basics - Anfänger-Themen 2
D Felder Java Basics - Anfänger-Themen 2
D Übung Felder java Error kompilieren Java Basics - Anfänger-Themen 4
M Felder leer - überprüfen? Java Basics - Anfänger-Themen 2
X Verknüpfte Excel Felder mitändern Java Basics - Anfänger-Themen 6
Z Erste Schritte 9x9 Felder Erzeugen+Aufrufen Java Basics - Anfänger-Themen 1
S Wie instanziert man Felder? Java Basics - Anfänger-Themen 11
V Zwei Felder Adderen Java Basics - Anfänger-Themen 2
W Methoden Falsche Felder von Methode belgegt Java Basics - Anfänger-Themen 14
M Spielfeld mit 10x10 Felder Java Basics - Anfänger-Themen 13
E Felder bei falscher Eingabe leeren Java Basics - Anfänger-Themen 8
S Felder mit Variablen/Tabellen verknüpfen! Java Basics - Anfänger-Themen 3
M Felder mit Methode verändern Java Basics - Anfänger-Themen 11
W Datentypen Felder mit Potenzen Java Basics - Anfänger-Themen 31
C Erste Schritte felder, die public final sind Java Basics - Anfänger-Themen 6
B Frage zur Effizienz - alle Array-Felder initialisieren oder jedes Feld auf null prüfen? Java Basics - Anfänger-Themen 4
C Felder(Größte Zahl, Index) Java Basics - Anfänger-Themen 6
K Felder Java Basics - Anfänger-Themen 5
M 3 Felder, Barcode, reinschreiben in die DB Java Basics - Anfänger-Themen 30
D Datentypen Felder: Deklaration und Initialisierung Java Basics - Anfänger-Themen 5
C Java Felder bearbeiten Hilfe Java Basics - Anfänger-Themen 4
H Felder mit unterschiedl. Typen sortieren Java Basics - Anfänger-Themen 5
B n-dimensionale Felder in m-dimensionale Felder konvertiert Java Basics - Anfänger-Themen 30
H felder vergleichen Java Basics - Anfänger-Themen 6
F Felder von aufrufender Klasse ändern Java Basics - Anfänger-Themen 16
A Felder Java Basics - Anfänger-Themen 7
A Mehrdimensionale Felder Java Basics - Anfänger-Themen 18
C Felder im Dialog zurücksetzen Java Basics - Anfänger-Themen 3
E Wechselnde Felder erzeugen Java Basics - Anfänger-Themen 15
maddin86 Eine Methode für ein- und zweidimensionale double Felder als Parameter? Java Basics - Anfänger-Themen 5
A Felder- Minimum/Maximum Java Basics - Anfänger-Themen 2
D Felder Java Basics - Anfänger-Themen 7
D Felder Java Basics - Anfänger-Themen 2
T Border Layout alle mittleren felder gleich groß Java Basics - Anfänger-Themen 3
C Speicherverwaltung für Felder Java Basics - Anfänger-Themen 8
S EINDIMENSIONALE FELDER? Java Basics - Anfänger-Themen 23
G 3. Aufgaben und komme nicht weiter (Felder, Methoden) Java Basics - Anfänger-Themen 3
M Felder (Wo liegt der Fehler?) Java Basics - Anfänger-Themen 2
D Wie werden Felder grau? Java Basics - Anfänger-Themen 26
S generische Felder Java Basics - Anfänger-Themen 2
A Felder Java Basics - Anfänger-Themen 3
D String mit split teilen und leere Felder behalten Java Basics - Anfänger-Themen 4
R Felder unterschiedlichen Typs Java Basics - Anfänger-Themen 9
J 2 Felder aus DB selektieren u. in JList - eines verstecken? Java Basics - Anfänger-Themen 7
T Suche über mehrere Felder value = key = value Java Basics - Anfänger-Themen 3
B Array doppelt Felder löschen Java Basics - Anfänger-Themen 27
B clone(), Clonable und Felder von Interfacetypen Java Basics - Anfänger-Themen 3
G Felder kopieren Java Basics - Anfänger-Themen 8
G Felder-Länge Java Basics - Anfänger-Themen 2
G Felder zurückgeben? Java Basics - Anfänger-Themen 3
C Früheste Datum aus 3 Felder Java Basics - Anfänger-Themen 20
M Felder innerhalb eines Arrays vergleichen Java Basics - Anfänger-Themen 2
D Felder vergleichen Java Basics - Anfänger-Themen 14
D Verbindung von Methoden und Felder Java Basics - Anfänger-Themen 3
A Aus dem menü heraus andere Felder bearbeiten Java Basics - Anfänger-Themen 2
S Statische Felder - statische Methoden Java Basics - Anfänger-Themen 2
G variable felder in java? geht das? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben