java.lang.reflect - Getter und Setter ermitteln

Status
Nicht offen für weitere Antworten.
K

KSG9|sebastian

Top Contributor
Hi Leute,

ich erzeuge Klassen mit Class.forName("name") und das objekt dazu mit Class.forName(..).newInstance()
Die Objekte haben private Attribute die man durch Getter und Setter ändern und lesen kann.
Ich will aber nicht davon abhängig sein, dass das die Getter und Setter Methoden immer get<Attribut> und set<Attribut> heisen.

Also sowas hier...

Code:
public GetteruSetter(){
    private String text;

    public void setText(String text){
        this.text = text;
    }    
    public String getText(){
        return text;
    }

..will ich nicht zwingend vorraussetzen, es könnte ja auch sein dass mal jemand so etwas macht:

Code:
public GetteruSetter(){
    private String text;

    public void setTheText(String text){
        this.text = text;
    }    
    public String getTheText(){
        return text;
    }

So wie ich es bisher habe wird nur folgendes überprüft:

GET-Methode

Fängt die Methode mit "get" an ?
Geht der Methodenname nach "get" mit dem Namen des Attributes weiter? (text => getText) ?
Stimmt der Returntyp ?

Die einzige Möglichkeit die ich wüsste wäre die, dass ich nen regex-pattern benutze. Dann hab ich aber das Problem, dass die Getter, Setter evtl. falsch gefunden werden wenn 2 Attribute Ähnlich heisen (getColText() und getFormText()) z.b., und dass will ich auch nicht haben :)

MfG

Sebastian
 
I

Illuvatar

Top Contributor
Und wie stellst du dir vor, dass die JRE die passende getter- und setter-Methode finden soll? In Java sind diese ja nichts anderes als Konventionen, d.h. etwas besseres, als was du hast, wird es kaum geben.
 
Bleiglanz

Bleiglanz

Gesperrter Benutzer
schau mal ins Package java.beans

=> wenn du die Dinger selbst schreibst, könntest du deine Beans ganz schön aufpeppen (BeanInfo, PropertyDescriptor) - und dann auch zur Laufzeit viele Meta-Infos auslesen

war ursprünglich mal für den Einsatz in visuellen IDEs Komponentenleiste gedacht, daher normalerweise nicht vorhanden
 
G

Grizzly

Top Contributor
Ich mache das immer so:

Ich suche mir alle Attribute - auch private - des Objektes heraus. Dann bastele ich mir einfach den getter- bzw. setter.Namen und versuche auf die ethode zuzugreifen. Die Methode muss natürlich einen Rückgabewert bzw. einen Parameter vom entsprechenden Typ des Attributes haben und public sein.

Beispiel:
Ein Objekt der Klasse Auto hat folgendes Attribute:
Code:
private Motor motor;
Dann muss es einen Getter
Code:
public Motor getMotor();
und einen Setter
Code:
public void setMotor();
geben.

Dabei ist zu beachten, dass bei boolean Attributen der Getter
Code:
public boolean isBenzinMotor();
heisst, und nicht
Code:
public boolean getBenzinMotor();
.
 
K

KSG9|sebastian

Top Contributor
@grizzly: schon klar, so hab ich es bisher auch. aber das problem ist, dass die getter und setter immer den namen

get<attribut-name>, set<attribut-name> oder is<attribut-name>

haben müssen, und genau das wollte ich nicht!


@bleiglanz: danke, ich gucks mir mal an
 
G

Grizzly

Top Contributor
KSG9|plak hat gesagt.:
schon klar, so hab ich es bisher auch. aber das problem ist, dass die getter und setter immer den namen

get<attribut-name>, set<attribut-name> oder is<attribut-name>

haben müssen, und genau das wollte ich nicht!

Hm, laut Java Quellcode Konvention von Sun sollten sie das aber. :###
 
K

KSG9|sebastian

Top Contributor
Ja, bei mir heißen sie auch so, aber wenn ich das programm an nen kumpel weitergeb dann wahrscheinlich nimmer ;D
 
G

Grizzly

Top Contributor
KSG9|plak hat gesagt.:
Ja, bei mir heißen sie auch so, aber wenn ich das programm an nen kumpel weitergeb dann wahrscheinlich nimmer ;D

Tja, dann... musst Du wohl 'ne eigene Java VM mit einer künstlichen Intelligenz mitgeben, die Dir anhand des Codes sagen kann, was der Setter und was der Getter eines bestimmten Attributes ist. ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Applet java.lang.reflect.InvocationTargetException Allgemeine Java-Themen 9
G Problem mit java.lang.reflect.Field Allgemeine Java-Themen 15
F Fehlermeldung: java.lang.NoClassDefFoundError: org/apache/commons/net/ntp/NTPUDPClient Allgemeine Java-Themen 6
P Swing Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: npoints > xpoints.length || npoints > ypoints.length Allgemeine Java-Themen 5
S Exception in thread "main" java.lang.NullPointerException at FamilienApp.main(FamilienApp.java:15) Allgemeine Java-Themen 1
E HILFE !! Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils Allgemeine Java-Themen 4
J Threads - java.lang.IllegalThreadStateException Allgemeine Java-Themen 6
javaerd Binomialkoeffizient ausrechnen, Exception in thread "main" java.lang.StackOverflowError Allgemeine Java-Themen 6
T Eclipse Dll einbinden java.lang.UnsatisfiedLinkError nur in Eclipse nicht via javac Allgemeine Java-Themen 1
V Compiler-Fehler Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 125, Size: 125 Allgemeine Java-Themen 11
J Exception in thread "main" java.lang.NoClassDefFoundError Allgemeine Java-Themen 4
H Java Mail Fehlermeldung: java.lang.NoClassDefFoundError: javax/mail/internet/AddressException Allgemeine Java-Themen 5
Crooda Compiler-Fehler java.lang.NoClassDefFoundError bitcoinj Allgemeine Java-Themen 1
I Fehler java.lang.NullPointerException Allgemeine Java-Themen 5
L Eigenener ClassLoader wirft java.lang.NoClassDefFoundError Allgemeine Java-Themen 0
H java.lang.NullPointerException Allgemeine Java-Themen 5
L Interpreter-Fehler java.lang.NullPointerException Allgemeine Java-Themen 17
F java.lang.ClassNotFoundException: .class Allgemeine Java-Themen 5
S java.lang.NoClassDefFoundError Allgemeine Java-Themen 5
J Compiler-Fehler java.lang.StringIndexOutOfBoundsException Allgemeine Java-Themen 12
D java.lang.TypeNotPresentException Allgemeine Java-Themen 3
A java.lang.NullPointerException bei Schleife Allgemeine Java-Themen 3
L java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 10
S javadoc java.lang.NullPointerException Allgemeine Java-Themen 2
H java.lang.OutOfMemoryError bei der wiederholten Erzeugng von Threads Allgemeine Java-Themen 8
B Variable class in java.lang.Object Allgemeine Java-Themen 11
N java.lang.IllegalMonitorStateException: object not locked by thread before notify() Allgemeine Java-Themen 2
T ProcessBuilder (java.lang.NoClassDefFoundError) Allgemeine Java-Themen 2
T java.lang.AssertionError: Allgemeine Java-Themen 4
T java.lang.ClassCastException: Allgemeine Java-Themen 4
P Java Probleme - java.lang.Thread.run(Unkown Source) Allgemeine Java-Themen 10
B java.lang.UnsupportedClassVersionError Allgemeine Java-Themen 12
M cannot be cast to java.lang.Comparable Allgemeine Java-Themen 5
B JNI - java.lang.UnsatisfiedLinkError Allgemeine Java-Themen 21
E Interpreter-Fehler java.lang.ExceptionInInitializerError Allgemeine Java-Themen 12
C java.lang.ClassCastException Allgemeine Java-Themen 3
P Fehler beim Programmstart: java.lang.NoClassDefFound Allgemeine Java-Themen 12
T java.lang.ClassCastException Allgemeine Java-Themen 7
B Java - java.lang Allgemeine Java-Themen 12
sylo java.lang.NoSuchMethodError: Obwohl Methode vorhanden Allgemeine Java-Themen 8
MonsterBit java.lang.NullPointerException Allgemeine Java-Themen 2
M SerialPort RS232 : java.lang.NoSuchFieldError: eis Allgemeine Java-Themen 2
U java.lang.ClassNotFoundException: .jar Allgemeine Java-Themen 8
G NoClassDefFoundError: java/lang/Object Allgemeine Java-Themen 4
W java.lang.ClassCastException Allgemeine Java-Themen 10
N Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.p Allgemeine Java-Themen 4
N java.lang.InstantiationException Allgemeine Java-Themen 10
J java.lang.NullPointerException bei Threadprogrammierung Allgemeine Java-Themen 9
D replaceAll => no such java.lang.NoSuchMethodError Allgemeine Java-Themen 5
G java.lang.LinkageError: loader constraints violation. Allgemeine Java-Themen 3
O java.lang.NumberFormatException für normalen integer Allgemeine Java-Themen 4
G Javadoc generiert keine Links zu java.lang Klassen? Allgemeine Java-Themen 4
Y java.lang.UnsupportedClassVersionError: Allgemeine Java-Themen 5
G java.lang.ClassCastException Allgemeine Java-Themen 3
J Fehler: java.lang.NullPointerException Allgemeine Java-Themen 2
E java.lang.outofmemory über windows-cmd ändern Allgemeine Java-Themen 6
J Folgender Fehler: java.lang.NullPointerException Allgemeine Java-Themen 4
I java.lang.UnsatisfiedLinkError: Allgemeine Java-Themen 8
J Exception in thread "main" java.lang.OutOfMemoryEr Allgemeine Java-Themen 26
J java.lang.StackOverflowError Debugging? Allgemeine Java-Themen 51
D java.lang.UnsatisfiedLinkError Allgemeine Java-Themen 5
S Fortran Funktion mit JNI aufrufen: java.lang.UnsatisfiedLink Allgemeine Java-Themen 2
S java.lang.UnsatisfiedLinkError mit JNI Allgemeine Java-Themen 6
reibi java.lang.Class - Resource - Solaris Allgemeine Java-Themen 17
S Exception in Thread "main" java.lang.NoClassDef. b Allgemeine Java-Themen 2
M java.lang.UnsupportedClassVersionError: Bad version number i Allgemeine Java-Themen 5
J java Thread java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 7
O "AWT-EventQueue-1" java.lang.ArrayIndexOutOfBounds Allgemeine Java-Themen 6
B Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 12
G Error: java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 2
S java.lang.OutOfMemoryError: Java Allgemeine Java-Themen 22
G java.lang.NullPointerException JFreeChart Allgemeine Java-Themen 5
E Java Fehlermeldung java.lang.NoClassDefFoundError Allgemeine Java-Themen 3
P Kompilerfehler: at java.lang.ClassLoader.loadClassInternal(U Allgemeine Java-Themen 16
M java.lang.NullPointerException im Chatclient Allgemeine Java-Themen 12
H java.lang.ExceptionInInitializerError Allgemeine Java-Themen 7
D java.lang.IllegalMonitorStateException: current thread not Allgemeine Java-Themen 3
P Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 3
P Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 15
P Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 3
T Profifrage: java.lang.StackOverflowError bei BigInteger Allgemeine Java-Themen 27
M java.lang.OutOfMemoryError Allgemeine Java-Themen 2
W java.lang.ClassNotFoundException Allgemeine Java-Themen 10
F java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 22
B Exception in thread "main" java.lang.OutOfMemoryEr Allgemeine Java-Themen 5
S fehlermeldung java.lang.OutOfMemoryError Allgemeine Java-Themen 5
B java.lang.NullPointerException Allgemeine Java-Themen 11
S Exception in thread "main" java.lang.StringIndexOu Allgemeine Java-Themen 9
H Skalieren von Image -> java.lang.OutOfMemoryError - WARUM Allgemeine Java-Themen 18
J java.lang.ArrayIndexOutOfBoundsException Allgemeine Java-Themen 2
P Hilfe zu java.lang.Object Allgemeine Java-Themen 3
G jTable-Problem --> java.lang.OutOfMemoryError Allgemeine Java-Themen 5
G Java.lang.Compiler Allgemeine Java-Themen 3
E Exception in Thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 5
F java.lang.OutOfMemoryError Allgemeine Java-Themen 13
R java.lang.String maximale Anzahl der Zeichen Allgemeine Java-Themen 7
B java.lang.IllegalStateException Allgemeine Java-Themen 2
D java.lang.Math fehlerhaft? Allgemeine Java-Themen 18
M java.lang.OutOfMemoryError Allgemeine Java-Themen 7
D java.lang.error Allgemeine Java-Themen 2

Ähnliche Java Themen

Anzeige

Neue Themen


Oben