Per Reflection membervariablen überschreiben / zuweisen / nullen

Status
Nicht offen für weitere Antworten.

ruutaiokwu

Top Contributor
hallo zusammen,

für eine struts-webanwendung muss ich bei einem bean alle membervariablen überschreiben / zuweisen / nullen können, und dies per reflektion. (so kann das bean später einfacher erweitert werden...)

dazu habe mal alle felder geholt.

kurz und bündig: was muss in den try-block hinein? habe alles mögliche ausprobiert, z.b. Field.set(Object), nützt alles nichts...

hier der code:

[HIGHLIGHT="Java"]public static void resetMemberString(final Object aObject)
{
Field[] lField = aObject.getClass().getDeclaredFields();

int lCnt = 0;

for (lCnt = 0; lCnt < lField.length; lCnt++)
{
Field lTmpField = lField[lCnt];


try
{

}
catch (final Exception caException)
{
System.out.println("Exception: "
+ caException.getLocalizedMessage());
}
}
}[/HIGHLIGHT]
...und: was hat es mit Field.get(Object) auf sich? was soll der parameter bei einem getter??

besten dank im voraus!

grüsse, jan
 
Zuletzt bearbeitet von einem Moderator:

0x7F800000

Top Contributor
für eine struts-webanwendung muss ich bei einem bean alle membervariablen überschreiben / zuweisen / nullen können, und dies per reflektion. (so kann das bean später einfacher erweitert werden...)
kenne mich mit struts zwar nicht aus, aber grundsätzlich hört sich das imho recht merkwürdig an.


Field.set(Object), nützt alles nichts...
Nun ja, da in deinem code eigentlich nichts läuft, könnte man eigentlich behaupten, dass alles glattläuft... Das mit leeren Menge ist immer auslegungssache^^


...und: was hat es mit Field.get(Object) auf sich? was soll der parameter bei einem getter??
API gelesen? Ist eigentlich alles recht übersichtlich beschrieben? :confused:
Das "Field" gehört erstmal zu einer klasse. Bei get(Object) musst du noch diejenige Instanz der Klasse übergeben, von der du das Field haben willst. Genau dasselbe gilt für set(Object, Value). Wie soll denn der Compiler überhaupt set(Object) mit nur einem Argument gefressen haben, das verstehe ich jetzt nicht?

Und alle Exceptions abzufangen ist nicht so toll, rächt sich später zehn mal...
 
Zuletzt bearbeitet von einem Moderator:
M

maki

Gast
für eine struts-webanwendung muss ich bei einem bean alle membervariablen überschreiben / zuweisen / nullen können, und dies per reflektion. (so kann das bean später einfacher erweitert werden...)
Schon mal etwas von struts (Dyna)Beans gehört?
 

ruutaiokwu

Top Contributor
@Andrey: "Das "Field" gehört erstmal zu einer klasse. Bei get(Object) musst du noch diejenige Instanz der Klasse übergeben, von der du das Field haben willst. Genau dasselbe gilt für set(Object, Value)."

DANKE FÜR DEN TIPP!!!


...ja, die set-methode hat 2 parameter. war gerade im stress und musste weg! was exceptions betrifft würde ich diese weiterleiten, aber beim prototyping ist das so lang wie breit...



@maki: nein, befasse mich erst seit montag (neuer job...) konkret damit. schon lange bewusst ist mir aber, dass es im java-umfeld (inkl. j2ee) technologien wie sand am meer gibt.

aus diesem grund ist es mir manchmal lieber, etwas selbst zu machen. in beispielen, welche mir von mitarbeitern vorgelegt wurden, wurden die membervariablen (resp. die rückgabewerte der getter) über eine reset()-funktion innerhalb des beans zurückgesetzt. dort stand halt z.b. einfach vorname = null;, nachname=null; etc...

in diesem fall müsste, falls das bean später erweitert werden würde, halt einfach eine neue zeile à la neueMemberVar = null; hinzugefügt werden... da ist meine lösung doch dynamischer.


et voilà:

[HIGHLIGHT="Java"]import java.lang.reflect.Field;

public class MemberVarsResetter
{
public static void resetMemberVars(final Object caObject)
{
final Field[] clFieldArr = caObject.getClass().getDeclaredFields();

int lCnt = 0;

for (lCnt = 0; lCnt < clFieldArr.length; lCnt++)
{
final Field clField = clFieldArr[lCnt];

clField.setAccessible(true);

try
{
clField.set(caObject, null);
}
catch (final Exception caException)
{
System.out.println("Exception: " + caException.getLocalizedMessage());
}
}

System.out.println(lCnt + " Felder wurden zurückgesetzt.");
}
}[/HIGHLIGHT]
 
Zuletzt bearbeitet von einem Moderator:

0x7F800000

Top Contributor
in diesem fall müsste, falls das bean später erweitert werden würde, halt einfach eine neue zeile à la neueMemberVar = null; hinzugefügt werden... da ist meine lösung doch dynamischer.
Einerseits bin ich prinzipiell für dry und so... aber imho sollte man nicht mit nuklearwaffen rumballern, wenn es auch mit einem Plastikbecher geht.
...
ne, hab ich auch nicht verstanden. Aber Plastikbecher^^ :confused:
 
M

maki

Gast
@maki: nein, befasse mich erst seit montag (neuer job...) konkret damit. schon lange bewusst ist mir aber, dass es im java-umfeld (inkl. j2ee) technologien wie sand am meer gibt.

aus diesem grund ist es mir manchmal lieber, etwas selbst zu machen. in beispielen, welche mir von mitarbeitern vorgelegt wurden, wurden die membervariablen (resp. die rückgabewerte der getter) über eine reset()-funktion innerhalb des beans zurückgesetzt. dort stand halt z.b. einfach vorname = null;, nachname=null; etc...

in diesem fall müsste, falls das bean später erweitert werden würde, halt einfach eine neue zeile à la neueMemberVar = null; hinzugefügt werden... da ist meine lösung doch dynamischer.
:D
Du solltest dich wirklich mit struts auseinandersetzen bevor du dir "seltsame Konstrukte" aus dem Ärmel schüttelst ;)

DynaActionForms zB. werden über eine GUI (weil XML) konfiguriert, da reicht es dies zu konfigurieren, der Standardweg eben.
Um einiges "dynamischer", sauberer und besser als deine "lösung" ;)

struts ist ein Framework welches schon seit Urzeiten auf dem Markt ist.
Das Spiel heisst: RTFM
Nicht: Erfinde das Rad neu.
 
Zuletzt bearbeitet von einem Moderator:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Reflection: Membervariablen-Initialwerte Allgemeine Java-Themen 4
B Reflection gone wrong? Allgemeine Java-Themen 21
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
J Reflection Aufruf: .class durch .dll ersetzen Allgemeine Java-Themen 4
T Reflection - Abprüfen von Klasseneigenschaften Allgemeine Java-Themen 3
perlenfischer1984 Reflection : Element in generische Liste hinzufügen Allgemeine Java-Themen 4
J Reflection-Method Hook? Allgemeine Java-Themen 14
J Reflection mit Klasse und Subklasse Allgemeine Java-Themen 11
X public Getter ersetzen (Reflection?!) Allgemeine Java-Themen 3
A Reflection Problem Allgemeine Java-Themen 15
K Generic class und Reflection Allgemeine Java-Themen 2
G SecurityManager/Policy-File/Reflection Allgemeine Java-Themen 0
N Per Reflection auf (method) local inner class zugreifen? Allgemeine Java-Themen 3
E Reflection? Frage Allgemeine Java-Themen 4
B Reflection, invoke dynamisch befüllen Allgemeine Java-Themen 3
T Reflection Allgemeine Java-Themen 11
G Klassen Cast auf Argumentenklasse via Reflection? Allgemeine Java-Themen 10
H Collections Generics und Reflection Allgemeine Java-Themen 6
TheWhiteShadow Reflection-Lösung für Objektkopien Allgemeine Java-Themen 3
B Reflection: getMethods schlägt fehl (NoClassDefFoundE)) Allgemeine Java-Themen 15
P Reflection "Cast" Allgemeine Java-Themen 5
D Reflection-Performance Allgemeine Java-Themen 7
S Reflection und Generic Allgemeine Java-Themen 9
W Reflection -> getMethod bei optionalen Parametern Allgemeine Java-Themen 4
Kr0e Reflection - Instanz einer Klasse erstellen, ohne Default-Constructor Allgemeine Java-Themen 15
C Probleme mit dem Zugriff auf private Methode per reflection Allgemeine Java-Themen 2
C Zugriff auf private Methode per reflection geht nicht mehr Allgemeine Java-Themen 3
M Probleme mit Reflection Allgemeine Java-Themen 10
A Reflection Konstruktor Parameter Supertyp Allgemeine Java-Themen 2
D Vererbung, Reflection und automatischer Methodenaufruf Allgemeine Java-Themen 24
G Java Reflection Allgemeine Java-Themen 11
N Reflection: NoSuchMethodException obwohl Methode existiert Allgemeine Java-Themen 2
brunothg Problem mit Reflection Allgemeine Java-Themen 6
M reflection in inner classes Allgemeine Java-Themen 7
T Class-files zur Laufzeit zu Reflection-Zwecken laden Allgemeine Java-Themen 18
V Reflection - Field-Instanz und Annotations Allgemeine Java-Themen 6
Y Reflection und "extends" Schlüsselwort Allgemeine Java-Themen 3
R Reflection Problem Allgemeine Java-Themen 4
N getName() of reflection Object Allgemeine Java-Themen 4
P Reflection - Wie rufe ich die Felder einer Klasse in einer Methode der Basisklasse? Allgemeine Java-Themen 4
M Reflection Queue auslesen Allgemeine Java-Themen 6
N generic reflection Allgemeine Java-Themen 5
megachucky Java Reflection -> versteckte Felder finden? Allgemeine Java-Themen 3
MQue Reflection Exception Allgemeine Java-Themen 11
R Problem mit Reflection und Generics Allgemeine Java-Themen 3
T Zugriff per Reflection o.ä. möglich? Allgemeine Java-Themen 18
G Reflection Allgemeine Java-Themen 6
V reflection in java 5 und 6 Allgemeine Java-Themen 2
C Reflection Übergabeparamter überprüfen? Allgemeine Java-Themen 3
Ark Konstruktor per Reflection nicht bekannt Allgemeine Java-Themen 4
Q Objekte durch Reflection erzeugen Allgemeine Java-Themen 18
G [Reflection + WebService] Methodenaufruf an einem Proxy Allgemeine Java-Themen 11
T Parameternamen mit Reflection-API Allgemeine Java-Themen 14
M reflection mit parametern Allgemeine Java-Themen 8
M Reflection Frage Allgemeine Java-Themen 7
G Code vereinfachen bei Reflection Allgemeine Java-Themen 4
I reflection get inner static classes Allgemeine Java-Themen 2
C Reflection Allgemeine Java-Themen 12
Y Reflection - wie kann ich eine Methode benutzen Allgemeine Java-Themen 4
Y Reflection - wie anwenden/benutzen bei folgendem Problem Allgemeine Java-Themen 3
P Java Reflection API - ResultDataModel ? Allgemeine Java-Themen 3
R Object Dynamisch erzeugen (Reflection API) Allgemeine Java-Themen 22
N Design-Frage: persistent machen per Reflection Allgemeine Java-Themen 3
G Reflection: aktuelle bzw umschliessende Methode? Allgemeine Java-Themen 7
G per Reflection auf private Klassenattribute zugreifen? Allgemeine Java-Themen 9
G Reflection objekt mit generics erzeugen Allgemeine Java-Themen 5
M per reflection private attributsnamen auslesen Allgemeine Java-Themen 3
G Interface - Klassen implementieren das - Reflection ok? Allgemeine Java-Themen 4
C Reflection Problem! Allgemeine Java-Themen 2
G Object cast via Reflection Allgemeine Java-Themen 8
T Reflection und Typsicherheit Allgemeine Java-Themen 5
Q Umgang mit Reflection Allgemeine Java-Themen 4
S reflection Allgemeine Java-Themen 12
X Reflection performant? Allgemeine Java-Themen 11
M Reflection und Serializable Allgemeine Java-Themen 5
A Reflection - Variablen innerhalb einer Methode ermitteln Allgemeine Java-Themen 9
F Performance von Reflection vs Statisches Coden Allgemeine Java-Themen 4
the[V]oid Primitive Arrays per Reflection erzeugen? Allgemeine Java-Themen 2
W Package via Reflection parsen Allgemeine Java-Themen 4
R Interface mittels Reflection implementieren Allgemeine Java-Themen 8
M reflection Integer != int ? Allgemeine Java-Themen 3
M reflection invoce Allgemeine Java-Themen 3
K Reflection:Zugriff auf innere Klassen Allgemeine Java-Themen 4
N NoSuchMethodException bei Reflection-Versuch, aber warum? Allgemeine Java-Themen 3
byte Methodenaufruf per Reflection? Allgemeine Java-Themen 2
M Generics und Reflection Allgemeine Java-Themen 3
M Array per Reflection manipulieren Allgemeine Java-Themen 5
M Klassen von ausserhalb des Jars per Reflection nachladen Allgemeine Java-Themen 2
thE_29 Reflection Allgemeine Java-Themen 6
M statische Methode per reflection aufrufen Allgemeine Java-Themen 2
B Frage zu Reflection Allgemeine Java-Themen 3
V Reflection - Problem Allgemeine Java-Themen 3
clemson Reflection Interface Allgemeine Java-Themen 4
G mit reflection an die felder einer klasse rankommen Allgemeine Java-Themen 4
N Reflection: An Package einer .class-Datei kommen Allgemeine Java-Themen 2
N Reflection: Feststellen ob eine Klasse abstract ist Allgemeine Java-Themen 3
B Reflection Allgemeine Java-Themen 10
C Reflection und variable casten ! Allgemeine Java-Themen 10
C Reflection - Kurze Beschreibung? Allgemeine Java-Themen 3
F Frage zum Thema Reflection Allgemeine Java-Themen 13

Ähnliche Java Themen

Neue Themen


Oben