Generische Klasse

RealHAZZARD

Erfahrenes Mitglied
Hallo,

ich möchte gern folgendes machen:
Ich habe eine Klasse (A), die eingiges an Funktionalität bietet. Diese Klasse möchte ich gern generisch von einer anderen Klasse(B) erben lassen.
Nehmen wir an A hat von Haus aus die Methoden:
+ void machWas()
+ void machNochWas()

Und B hat die Methoden:
+ void setIrgendwas(Irgendwas i)
+ Irgendwas getIrgendwas()


Jetzt möchte ich gern Klasse A instanzieren und generisch einen Typ (in diesem Fall B) mitgeben. Und daraus soll dann eine Klasse kommen die diesem Methodenumfang hat:
+ void machWas()
+ void machNochWas()
+ void setIrgendwas(Irgendwas i)
+ Irgendwas getIrgendwas()

Geht das? Oder muss man das anders angehen? Wenn ja wie?

Ich hoffe ich konnte mein Problem halbwegs rüberbringen.
Vielen Dank schonmal.
 
Hallo,

mal schauen ob ich es richtig verstanden hab. Du hast eine Klasse. Diese Klasse beinhaltet Methoden. Jetzt möchtest du deiner Klasse eine andere Klasse übergeben, wie zum Beispiel bei
Code:
List<Object> list = new ArrayList<Object>();
und dann soll deine Klasse die Methoden der übergebenen Klassen besitzen, oder?

MFG

zEriX
 
Hallo,

ich danke dir für deine schnelle Antwort. Ich glaube schon dass du mich richtig verstanden hast, aber das Beispiel passt nicht dazu. Denn das zeigt ja eine Liste, mit der ich (zB. mittels get(...)) direkt auf die Methoden der Elemente zugreifen kann. Ich suche ja nichts mit Liste. Mir ist klar dass dieser Code nicht funktioniert, kannst es ja als PseudoCode sehen ;-)
Java:
// So ist es ja normal, aber nicht flexibel
class A extends B{
...
}


//Dabei bekommt man den Fehler "Cannot refer to the type parameter T as a supertype".  Aber genau das will ich!
//Wobei T den Typen darstellt, den ich oben B genannt habe
class A<T>  extends T{
...
}
 
Zuletzt bearbeitet:
Weil der Programmierer der meine Klasse verwendet dieser einfach ein Datenobjekt übergeben soll und dann Zugriff auf die Methoden der neuen Klasse allerdings auch der übergebenen Datenklasse haben muss. Ich arbeite in meiner Klasse mit Reflections, um so einige Vörgänge in der Datenklasse zu überwachen.
Klar man kann die Datenklasse auch anders überwachen(als sie unbedingt durch die neue Klasse dynamisch zu erweitern), aber es wäre schon schön, wenn es so funtionieren würde.
 
Für mich hört sich das gerade so an, als versuchst du AOP nachzubauen. Nämlich das was du machen willst kann AOP. Und da konnten die das nicht so leicht lösen wie du das möchtest. Spring zum Beispiel verwendet einmal Dynamic Proxys und einmal die cglib-API.

MFG

zEriX
 
Ja das kann gut sein, dass meine Anforderung eher zu AOP passen würde, alldings ist meine Vorgabe herkömmliches Java zu verwenden. Thomas hatte mir für die Überwachung den selben Tip gegeben(cglib). Und genau das verwende ich ja, ähnlich wie hier. Und somit hätte ich ja eigentlich was ich wollte, allerdings ist die Verwendung der Methoden der übergebenen Klassen noch nicht vor der Laufzeit bekannt.Die IDE bemerk dann also Fehler, die eigentlich nicht da wären.
 
Zurück