Diskussion:Reflexion (Programmierung)

message: Für mich liest sich der Abschnitt wie eine unstrukturierte Stichpunktsammlung. Der müsste mal etwas klarer geschrieben und umsortiert werden. --Amtiss, SNAFU ? 15:53, 6. Sep. 2020 (CEST)
thread_title:  Abschnitt Details überarbeiten 

message: Der Artikel spricht von Reflexion generell dann, wenn Typinformationen zu Laufzeit vorliegen. Ich denke, es wäre dann sinnvoll zu unterscheiden zwischen der rein internen Verwendung (z. B. ein Interpreter realisierte mit Hilfe der Meta-Information dynamische Typsicherheit) und einem reflexiven API, das es einem Programmierer in der Sprache selbst ermöglicht die Informationen abzufragen und zu verwenden.
Ich bin mir allerdings nicht sicher, ober der Artikel nicht generell darin irrt auch die nicht zur Programmierung nutzbare Metainformation als Reflexion einzustufen. Aufgrund fehlender Belege, lässt sich das schwer überprüfen. ;)
--Ormek (Diskussion) 11:58, 2. Okt. 2021 (CEST)
thread_title:  Reflexion mit und ohne API 

message: Hallo zusammen.
Grundsätzlich ist der Artikel ja gut gelungen, doch die letzte Zeile Beispielcode stösst mir ein wenig auf: "System.out.println("Vorname von " + person + " ist " + getStringProperty(person, "getVorname"));"
Ich unterstelle mal, dass "person" ein Objekt ist. Wieso wird dies dann als String verwendet? Hat jemand den Stringcast-Operator für dieses Objekt überladen oder wieso gibt person einen Wert zurück? Das finde ich etwas verwirrend und andere sicher auch. Ein Listing der Klasse wäre sicher hilfreich...
cDoreOff: sicherlich ist das Beispiel verwirrend, aber durchaus geläufig für Java. In Java ist diese Schreibweise erlaubt. Das Resultat ist, dass auf dem Objekt person die Methode toString() aufgerufen wird.
Eventuell könnte man auch als praxisorientiertes Anwendungsbeispiel die Konfigurierbarkeit zur Laufzeit nennen. Mir fällt da spontan die Anzeige verschiedener Daten für verschiedene User ein. Jeder bekommt seine eigene Konfigurationsdatei, in der zum Beispiel festgehalten wird welche Informationen in den Spalten einer Tabelle dargestellt werden sollen und welche nicht. Die anzuzeigenden Infos werden dann während der Laufzeit abgefragt, das entlastet den Arbeitsspeicher usw.
Nur als kleine Anregung - wie gesagt =).
cDoreOff: Ich habe allerdings ein anderes Problem mit diesem Artikel. Es findet keine klare Trennung zwischen Introspektion und Reflektion statt.
cDoreOff: Das Beispiel gefällt mir auch nicht so dolle. Es zeigt nicht den beliebten Einsatz der Reflektion/Introspektion. Z.B. Interessant dann, wenn man z.B. auf der Klasse, die als Objekt vorliegt einen Konstruktor aufrufen möchte. Oder auch einfach nur auf unerlaubte Felder/Methoden eines Objekts zugreifen möchte. Es fehlt in dem Artikel so zu sagen der Sinn und Zweck der Introspektion.
: Deine Beispiele halte ich allerdings auch nicht für optimal. Das sind ja eher Java-spezifische Hacks um Einschränkungen der Sprache zu umgehen. Sinnvoller fände ich z.B.:
: * Persistenz
: * Debugger/Class Browser/Interpreter
: * Testframeworks (alle Methoden finden und aufrufen, die mit "test" beginnen)
: Oefe 18:29, 5. Mär 2006 (CET)
replies: text:  Sehe ich auch so, habe mal ein Beispiel in Python eingefügt, deine Ideen kann man damit leicht zeigen (oder einfach im Text erwähnen, dass sowas dadurch möglich wird, fände ich glaube ich besser). TRauMa 16:17, 1. Mai 2006 (CEST)
thread_title:  Code-Beispiele 

message: Das Python-Beispiel ist doch ein Scherz oder ? Es ist länger und wesentlich unleserlicher als das alte Java-Beispiel. Dies hier ist nicht der Ort um seine Programmierkenntnisse zu präsentieren. Das ursprüngliche Java-Beispiel ist wesentlich besser geeignet, alleine schon desswegen da es sich leicht auf andere OO-Sprachen abbilden läßt und durch die Java-typischen natürlichsprachlichen Konstrukte einfacher verständlich sind. Ich bin also dafür das Python-Beispiel wieder gegen das Java-Beispiel auszutauschen.--matrixx 10:51, 21. Jul 2006 (CEST)
thread_title:  Reflections Beispiel 

message: Hallo,
ich will ja nicht kleinlich erscheinen, aber handelt es sich bei person nicht um eine konkrete Instanz (= ein Objekt) der Klasse person?!
"...
Die folgende Anweisung würde dann die Methode getVorname() des Objekts der Klasse person aufrufen und deren Rückgabewert ausgeben.
System.out.println("Vorname von " + person + " ist " + getStringProperty(person, "getVorname"));
..."
: Richtig: person benennt ein Objekt. Zu welcher Klasse es gehört (kann Person oder Schüler oder Mensch ...  sein) wissen wir nicht. Der Satz braucht keine Veränderung. --Ormek (Diskussion)
: Jain. getVorname() ist eine Objektmethode, keine Klassenmethode (also statische Methode). Um es genauer zu machen könnte man im sysout Beispiel statt "person" z.B. "john" schreiben um es besser von der Klasse Person unterscheiden zu können. --matrixx 17:34, 6. Dez. 2006 (CET)
replies: text:  Ich würde mal in Frage stellen, ob es sinnstiftend ist, person so wie im Bespiel zu gebrauchen. Da drängt sich dem unbedarften Leser die Frage auf, wozu ich Reflection brauche, wenn ich das Objekt einfach zwischen zwei Strings packen und ausdrucken kann. (Wichtig: Bitte nicht hier erklären, sondern im Artikel!)  --193.254.155.48 16:07, 22. Sep. 2009 (CEST)
replies: text:  Keines der Beispiele verwendet Reflexion sinnvoll, sondern zeigen nur die minimalistische Verwendung der API. --Ormek (Diskussion) 12:20, 2. Okt. 2021 (CEST)
thread_title:  person == Klasse; person != Objekt 

message: Jetzt habe ich hier Reflexion in mehreren Sprachen als Beispiel. Aber irgendwie erschließt sich mir noch nicht der Nutzen. Gibt es ein anschauliches Beispiel wo Reflexion von Nutzen ist?--80.64.189.222 11:10, 19. Jan. 2009 (CET)
thread_title:  Praktisches Beispiel? 

message: Ist das das Gleiche wie selbstmodifizierender Code, wie er bspw. in Schadsoftware vorkommen kann, um sich vor Antivirensoftware zu verstecken? Wenn ja, wie gehen die Antivirensoftwarehersteller damit um, wenn praktisch jede normale Anwendung, die diese Technik verwendet, sich selbst modifiziert? --46.5.95.121 09:06, 15. Mär. 2018 (CET)
thread_title:  Selbstmodifizierender Code?