Annotations mit Vererbung

Status
Nicht offen für weitere Antworten.

loeppel

Mitglied
Hi,

ich arbeite mit einem Framework das Properties unterstützt.
Diese sind im grunde einfach eine Hashtable in einem BaseObject.

Jetzt möchte ich gerne die Möglichkeit hinzufügen ein Feld einer Klasse als Property via Annotations zu "markieren".
Das markieren an sich funktioniert auch schon recht gut.

Also nochmal schnell:
- im BaseObject lese ich in einem non-static-initializer (ähnlich einem Konstruktor) die Annotations für Fields aus
- alle anderen Objekte Erben von BaseObject

Problem: Der Code im BaseObject findet NUR Annotations in seiner Klasse, und nicht auch die in den Abgeleiteten.

Was kann man dagegen tun?

Etwas Code, irgendwie bin ich nicht gut im Umschreiben ;-)

Auszug aus BaseObject.java
Code:
  public Hashtable<String, Object> annotedPropertyFields;

  @MyProperty(name="testProp")
  public String                    test         = "myTests";

  //
  // non static initializer
  //
  {
    /**
     * Annotations for Propertys
     */
    annotedPropertyFields = new Hashtable<String, Object>();

    Class<MyProperty> myPropteryAnnotation = MyProperty.class;

    Field[] fields = getClass().getFields();

    for( int i = 0; i < fields.length; i++ )
    {
      if( fields[i].isAnnotationPresent( myPropteryAnnotation ) )
      {
        MyProperty propertyAnnotation = fields[i].getAnnotation( myPropteryAnnotation );

        System.out.print( propertyAnnotation.name() );

        annotedPropertyFields.put( propertyAnnotation.name(), fields[i] );
      }
    }
    /* --- */
  }



Code:
public class Test extends BaseObject {

@MyProperty(name="propName")
public String justAFiled = "blubb";

}


Test asdf = new Test();

in asdf enthält in annotedPropertyFields jetzt NUR testProp => myTests, NICHT propName => blubb !!!

Jemand ne Idee?


Gruß,
loeppel
 

byte

Top Contributor
Du musst das ganze für alle Superklassen wiederholen (siehe Class#getSuperclass()).
 

loeppel

Mitglied
Hmm, ok, aber dann kann ich ja nur von oben nach unten machen.
Also muss der Code ja im grunde in die Klasse test.java und sich da dann die Superclasses holen (bei tieferen verschachtelungen).

Ich will aber ja das der Code für das Sammeln der Annotations in BaseObject bleibt.

Oder hab ich da jetzt einen Denkfehler?

Gruß,
loeppel
 

byte

Top Contributor
loeppel hat gesagt.:
Hmm, ok, aber dann kann ich ja nur von oben nach unten machen.
Also muss der Code ja im grunde in die Klasse test.java und sich da dann die Superclasses holen (bei tieferen verschachtelungen).

Ich will aber ja das der Code für das Sammeln der Annotations in BaseObject bleibt.

Oder hab ich da jetzt einen Denkfehler?

Gruß,
loeppel

Ja, Du hast einen Denkfehler. ;) Methoden in Java sind polymorph, getClass() in BaseObject liefert zur Laufzeit die konkrete Implementierungsklasse zurück. Der Code kann also bleiben wo er ist.
 

loeppel

Mitglied
Hmm, naja das dachte ich ja auch das getClass() mir die "richtige" Klasse liefert. Allerdings ist es ja eben so das die Annotation von BaseObject da sind und die von Test nicht!

Deswegen zerstört das ja mein Weltbild ;-)

Anderstrum wäre es logisch ja.

Hab das mit getSuperclass() eingebaut -> Keine veränderung (was aber ja auch klar ist denn ich gehe mit getSuperClass() ja im grunde den Weg in die "falsche richtung")

Gruß,
loeppel
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Java Class Intrumentation mit Annotations in Laufzeit Allgemeine Java-Themen 1
hdi Zu Reflections & Annotations Allgemeine Java-Themen 10
C Polymorphie Fragen zur Annotations von Persistenz Allgemeine Java-Themen 2
L Annotations um Gültigkeit von Attributen zu definieren? Allgemeine Java-Themen 4
K Annotations der aufrufenden Methode ermitteln Allgemeine Java-Themen 11
ruutaiokwu junit mit annotations geht nicht? Allgemeine Java-Themen 5
N Method-Annotations in aufgerufener Methode auswerten Allgemeine Java-Themen 2
W Annotations selbst erstellen und auswerten Allgemeine Java-Themen 4
dunhillone Mittels Annotations Methoden "erweitern"? Allgemeine Java-Themen 11
V Reflection - Field-Instanz und Annotations Allgemeine Java-Themen 6
Landei Annotations ableiten Allgemeine Java-Themen 2
G Annotations. warum ? Allgemeine Java-Themen 9
H eigene Annotations Allgemeine Java-Themen 2
byte Annotations: Arrays auslagern Allgemeine Java-Themen 2
G @Annotations Allgemeine Java-Themen 2
U Vererbung?! Allgemeine Java-Themen 15
temi Problem mit Aufrufreihenfolge bei Vererbung Allgemeine Java-Themen 3
MiMa Vererbung und Komposition?? Allgemeine Java-Themen 38
Kirby.exe Vererbung bei Generics Allgemeine Java-Themen 7
L Vererbung Verständnis Probleme Vererbung Allgemeine Java-Themen 2
W Generics + Vererbung Allgemeine Java-Themen 47
M Vererbung mithilfe von Bluej Allgemeine Java-Themen 3
M List -Tableview-Javafx-Vererbung Allgemeine Java-Themen 35
A Vererbung Selbstreferenzparameter Allgemeine Java-Themen 14
D Thema: Vererbung Ober-/Unterklassen Allgemeine Java-Themen 16
D Frage zu Vererbung Allgemeine Java-Themen 5
N Vererbung mit GUI Allgemeine Java-Themen 9
E Vererbung Countable mit Vererbung Allgemeine Java-Themen 6
J 2 Fragen zur Vererbung Allgemeine Java-Themen 5
T Javaklassen und vererbung Allgemeine Java-Themen 32
F Vererbung Allgemeine Java-Themen 5
Neumi5694 Vererbung Restriktive Vererbung Allgemeine Java-Themen 4
A Vererbung Übungsaufgabe Vererbung - Erstellung Klassenhierarchie Allgemeine Java-Themen 1
J Allgemeine Fragen zu Vererbung Allgemeine Java-Themen 1
kaoZ Generics und Vererbung Allgemeine Java-Themen 3
D Problem bei Vererbung abstrakter Klassen Allgemeine Java-Themen 6
D Object nach Vererbung mit Class Object überprüfen Allgemeine Java-Themen 4
T Super Klasse Vererbung Problem :/ Allgemeine Java-Themen 10
L Unabhängige Auslieferung bei Vererbung Allgemeine Java-Themen 20
S MVC - Vererbung Allgemeine Java-Themen 4
C Enums und Vererbung Allgemeine Java-Themen 6
F Google Guice + Generics + Vererbung Allgemeine Java-Themen 5
D Unterschied Vererbung und Polymorphie? Allgemeine Java-Themen 4
K Vererbung ohne Basisklasse zu kennen Allgemeine Java-Themen 20
Da_Tebe ArrayList<xyz> Verschachtelung oder Vererbung? Allgemeine Java-Themen 6
faetzminator statische Variablen in Interface - Vererbung? Allgemeine Java-Themen 9
M OOP PropertyChangeListener - Vererbung oder Komposition? Allgemeine Java-Themen 5
S OOP Mehrfache Vererbung von abstrakten Klassen Allgemeine Java-Themen 7
G Designfrage Vererbung ja oder nein Allgemeine Java-Themen 9
S equals - Identität ändern bei Vererbung? Allgemeine Java-Themen 5
dayaftereh Vererbung Hilfe Allgemeine Java-Themen 2
D Vererbung, Reflection und automatischer Methodenaufruf Allgemeine Java-Themen 24
A PropertyChangeListener Vererbung Allgemeine Java-Themen 4
P DefaultTreeCellRenderer Vererbung Allgemeine Java-Themen 5
S Objekte die Objekte enthalten: Keine Vererbung Allgemeine Java-Themen 4
J Vererbung bei abstrakten Klassen Allgemeine Java-Themen 2
S Vererbung: Welche Methode wird verwendet? Allgemeine Java-Themen 9
L Checkstyle: Wann ist eine Methode für Vererbung entworfen? Allgemeine Java-Themen 13
S normale vererbung als interface Allgemeine Java-Themen 2
S statische Methoden und Vererbung Allgemeine Java-Themen 6
R Vererbung - doppelte Paint-Methode Allgemeine Java-Themen 4
R Vererbung mit Interface und Abstract Allgemeine Java-Themen 3
B Vererbung bei enums ? Allgemeine Java-Themen 3
W Frage zu Vererbung / konkretes Beispiel Allgemeine Java-Themen 4
F Vererbung von SessionBeans Allgemeine Java-Themen 3
O abstract, privat, Vererbung Allgemeine Java-Themen 29
M Singleton und Vererbung? Allgemeine Java-Themen 45
T Problem mit Vererbung Allgemeine Java-Themen 3
V Vererbung und Schleifen Allgemeine Java-Themen 5
C Comparable + Vererbung Funktioniert nicht? Allgemeine Java-Themen 4
A Ansatz Objektorientierung, Methoden Vererbung Allgemeine Java-Themen 2
D Listen von Generischen Typen inkl. Vererbung Allgemeine Java-Themen 2
D Zugriffsmethode nach Vererbung ändern? Allgemeine Java-Themen 5
S Vererbung in UML Allgemeine Java-Themen 3
T Nochmal Frage zu Vererbung Interfaces etc. Allgemeine Java-Themen 10
Y Gedanken zur Vererbung Allgemeine Java-Themen 7
F Vererbung, Generizität und Collections. Allgemeine Java-Themen 7
G Frage zu statischen Variablen bei Vererbung Allgemeine Java-Themen 15
F Vererbung Allgemeine Java-Themen 5
S Vererbung von mehreren Klassen? Allgemeine Java-Themen 5
C enum und Vererbung Allgemeine Java-Themen 3
K Problem mit Vererbung - Kein wirklicher Nutzen. Allgemeine Java-Themen 10
G vererbung vs benutzung Allgemeine Java-Themen 7
L Vererbung klappt nicht Allgemeine Java-Themen 5
W Probleme mit Arrays und Vererbung ! Allgemeine Java-Themen 5
M vererbung einer "selbst-instanzierungs-klasse" Allgemeine Java-Themen 16
J Vererbung. Allgemeine Java-Themen 8
H Frage zur Vererbung Allgemeine Java-Themen 5
S private Instanzvaribalen bei "Innerer-Vererbung" Allgemeine Java-Themen 9
H Vererbung auch ohne erzeugung einer Instanz möglich? Allgemeine Java-Themen 3
M frage zur vererbung Allgemeine Java-Themen 12
G Generics und Vererbung. Allgemeine Java-Themen 21
M Vererbung von Hashtables Allgemeine Java-Themen 5
C dynamische Vererbung Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben