Multiple Generics

Foermchen82

Top Contributor
Hi zusammen,

ich habe diverse DaoImpl-Klassen, die alle Spring-JdbcDaoSupport extenden und selbst noch ein eigenes Interface implementieren.

Beispiel:

class DaoAImpl extends JdbCDaoSupport, implements DaoA.

Jetzt möchte ich für alle meine Daos gerne Testklassen erstellen, die von einer Abstrakte Klasse ableiten, die via Generics mit den Interfaces und Impl umgehen kann.

Geht sowas in der folgenden Art:

abstract class AbstractTestClass<T extends JdbcDaoSupport, I extends T>

wobei T die daoImpl ist und I das Dao-Interface?

Hintergrund ist, dass ich in der Abstrakten Klasse gerne auf die setDataSource Methode zugreifen möchte, aber in der konkreten Testklasse nur noch via Interface auf die Daos.

danke im voraus!!
 

mrBrown

Super-Moderator
Mitarbeiter
afaik ist das nicht möglich. Hast du in der abstrakten Klasse überhaupt Methoden, die das Doa-Interface zurückgeben/bekommen?

Warum willst du in den Testklassen die getesteten Klassen denn nur über ihr Interface ansprechen?
Du testest ja eine Implementation deines Interfaces, du kannst also imho auch, anstatt das Interface zu benutzen, direkt die zu testende Klasse benutzen. Die Klasse verfügt ja uU auch über mehr zu testende Methoden, als nur die des Interfaces.
Casten in der AbstractTestClass, wenn Zugriff auf JdbcDaoSupport nötig, wäre auch auch ne Möglichkeit...


Für deinen Fall wäre ansonsten noch eine abstrakte Klasse möglich, welche JdbCDaoSupport extended und DaoA implementiert, oder aber ein Verzicht auf das Interface und nur eine abstrakte Klasse, welche JdbCDaoSupport extended und die anderen Methoden deklariert.


Ich lasse mich da aber auch gern eines besseren belehren ;)
 

mrBrown

Super-Moderator
Mitarbeiter
abstract class AbstractTestClass<T extends JdbcDaoSupport & Dao>
Soweit ich verstanden hab, gibt es kein festes Dao, sondern DoaA,DaoB,... Also eher AbstractTestClass<Dao, T extends JdbcDaoSupport & Dao>, klappt aber nicht, weil Dao in dem Fall nicht generisch sein darf.

Aber vllt kann der TE noch mal genauer sagen, was er braucht und was er hat...
 

nvidia

Bekanntes Mitglied
Ah ja, ganz vergessen das Java so beschränkt ist. Dann muss er eben das Design ändern und einen zusätzlichen Typparameter mitschleifen, evtl. im JdbcDaoSupport.

Java:
interface DaoA {
}

abstract class JdbcDaoSupport<T> {
}

class DaoAImpl extends JdbcDaoSupport<DaoA> implements DaoA {
}

abstract class AbstractTestClass<A, B extends JdbcDaoSupport<A>>{
}

class TestClassImpl extends AbstractTestClass<DaoA, DaoAImpl>{
}
 

mrBrown

Super-Moderator
Mitarbeiter
Ah ja, ganz vergessen das Java so beschränkt ist. Dann muss er eben das Design ändern und einen zusätzlichen Typparameter mitschleifen, evtl. im JdbcDaoSupport.

Java:
interface DaoA {
}

abstract class JdbcDaoSupport<T> {
}

class DaoAImpl extends JdbcDaoSupport<DaoA> implements DaoA {
}

abstract class AbstractTestClass<A, B extends JdbcDaoSupport<A>>{
}

class TestClassImpl extends AbstractTestClass<DaoA, DaoAImpl>{
}


JdbcDaoSupport ist ne Klasse aus dem Framework ;)
Möglich wäre statt Interface DaoA "abstract class DaoA extends JdbcDaoSupport", ich wäre mir aber nicht sicher, ob solche Umwege für die Tests überhaupt nötig ist, oder ob's ohne doch viel leichter ist...
 

nvidia

Bekanntes Mitglied
JdbcDaoSupport ist ne Klasse aus dem Framework ;)
Möglich wäre statt Interface DaoA "abstract class DaoA extends JdbcDaoSupport", ich wäre mir aber nicht sicher, ob solche Umwege für die Tests überhaupt nötig ist, oder ob's ohne doch viel leichter ist...

Ach so, ja dann könnte er eine abstrakte Zwischenklasse rein zum Mitschleifen des Typparameters einführen die von JdbcDaoSupport erbt und alle seine Daos dann davon erben lassen. Aber ich bin mir auch nicht sicher ob das nicht alles ein wenig merkwürdig für das Testen ist.
 

nvidia

Bekanntes Mitglied
Als Alternative kann er auch ein Dao-Interface einführen welches den Typparameter mitschleift, das käme wohl seinen Anforderungen am nächsten. Bzw. könnte man die Generics dann komplett weglassen, da sie keinen Zweck mehr erfüllen.

Edit: Aber alles in Allem wenn er "einschränken" möchte bleibt ihm erst mal nichts anderes übrig, wie du (@mrBrown) erwähntest, die Dao-Interfaces in abstrakte Klassen umzuwandeln und entsprechend zu erben.

Java:
interface Dao<T extends Dao<T>> {
}

interface DaoA extends Dao<DaoA> {
}

abstract class JdbcDaoSupport {
}

class DaoAImpl extends JdbcDaoSupport implements DaoA {
}

abstract class AbstractTestClass<A extends JdbcDaoSupport & Dao<?>> {
}

class TestClassImpl extends AbstractTestClass<DaoAImpl> {
}
 
Zuletzt bearbeitet:

Foermchen82

Top Contributor
Hi zusammen,

danke für die Antworten. Was ich verstanden hab ist, dass meine Vorstellung so nicht geht. Aber der Hinweis: "Wenn du die Klasse Testen willst, warum gehts du dann über das Interface" ist tatsächlich berechtigt. Ich habe jetzt meine Tests auf die Impls umgestellt und kann damit eine entsprechende Abstrakte Klasse definieren.

Danke an alle!!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
E multiple Timer die sich nicht summieren Java Basics - Anfänger-Themen 12
JD_1998 Multiple Parametereingabe Java Basics - Anfänger-Themen 3
D [AES] input not multiple of 16 Java Basics - Anfänger-Themen 2
K RegEx - Multiple Line Java Basics - Anfänger-Themen 3
G Multiple Clients and one Server Java Basics - Anfänger-Themen 2
x22 Java Multiple Choice Test Java Basics - Anfänger-Themen 8
Dogge Multiple markers at line 15 Java Basics - Anfänger-Themen 13
U [Problem] Handling multiple frames Java Basics - Anfänger-Themen 5
P Threads Multiple Dialogboxen Java Basics - Anfänger-Themen 6
G Multiple Leerzeichen entfernen Java Basics - Anfänger-Themen 13
J String zu Double parsen (multiple points) Java Basics - Anfänger-Themen 2
H Multiple Markers at this line Java Basics - Anfänger-Themen 3
S Threads Handling multiple different Threads Java Basics - Anfänger-Themen 7
H Multiple Fileaccess - sync? Java Basics - Anfänger-Themen 7
H Multiple JFrames im GUI Editor von NetBeans Java Basics - Anfänger-Themen 2
S jList Multiple Selection mit Klick Java Basics - Anfänger-Themen 2
C Multiple Choice Test Java Java Basics - Anfänger-Themen 5
T Multiple BufferedImage Java Basics - Anfänger-Themen 3
H Generics machen mich verrückt Java Basics - Anfänger-Themen 8
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
MarvinsDepression Datentypen Generics: Erste Berührungen Java Basics - Anfänger-Themen 6
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
Cassy3 Generics - CompareTo Java Basics - Anfänger-Themen 21
T Collections Sind Subklassen-Objekte in Listen mit Generics erlaubt? Java Basics - Anfänger-Themen 16
districon Generics implementieren Java Basics - Anfänger-Themen 2
CptK Überprüfen ob übergebenes Objekt zu Generics passt Java Basics - Anfänger-Themen 2
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
B Hilfe bei Generics Java Basics - Anfänger-Themen 11
G Generics Compilerfehler Java Basics - Anfänger-Themen 6
G Generics Methoden Java Basics - Anfänger-Themen 7
G Generics Java Basics - Anfänger-Themen 3
L Generics Tripel Java Basics - Anfänger-Themen 26
W Fragen zu Generics Java Basics - Anfänger-Themen 14
S Hilfe. Generics und BiFunctions Java Basics - Anfänger-Themen 10
X Wie Generics richtig benutzen ? Java Basics - Anfänger-Themen 5
S Allgemeine Frage über Generics und Vererbungen Java Basics - Anfänger-Themen 5
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
I Java Generics factory method Java Basics - Anfänger-Themen 2
M Verständnisfrage zu Generics Java Basics - Anfänger-Themen 7
I Generics und Comparable Java Basics - Anfänger-Themen 14
G Generics mit ? und Diamantoperator Java Basics - Anfänger-Themen 4
G Generics: Wildcard ? Java Basics - Anfänger-Themen 12
D Generics methode Java Basics - Anfänger-Themen 2
I Frage zu Generics und Wildcards Java Basics - Anfänger-Themen 2
N Generics und Casting eines Objekts Java Basics - Anfänger-Themen 1
A Generics Java Basics - Anfänger-Themen 6
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
W Generics - Typ zurückbekommen Java Basics - Anfänger-Themen 4
Dimax Erste Schritte Generics von Profis leicht erklärt Java Basics - Anfänger-Themen 7
C Warum funktioniert 'instanceof' bei generics nicht? Java Basics - Anfänger-Themen 4
J Collections Generics: Typ wird nicht erkannt Java Basics - Anfänger-Themen 7
D Generics ArrayList: Bug im Quellcode Java Basics - Anfänger-Themen 14
C Generics Java Basics - Anfänger-Themen 8
M Generics getter und setter Methoden Java Basics - Anfänger-Themen 4
T Generics in Java... Java Basics - Anfänger-Themen 9
J Generics Java Basics - Anfänger-Themen 3
J Generics Datentypen vergleichen Java Basics - Anfänger-Themen 16
V Generics / eigene Liste Java Basics - Anfänger-Themen 4
O Generics - Implementierung Java Basics - Anfänger-Themen 7
Shizmo Frage zu Generics Java Basics - Anfänger-Themen 3
G Datentypen verschiedene Objekte in eine ArrayList, Generics Java Basics - Anfänger-Themen 2
H Typsicherheit/Generics Java Basics - Anfänger-Themen 1
U Java generics funktioniert nicht Java Basics - Anfänger-Themen 0
Tarrew Generics: Erste gemeinse Oberklasse als Rückgabewert Java Basics - Anfänger-Themen 1
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
S Generics und Comparable Interface Java Basics - Anfänger-Themen 5
A Generics Java Basics - Anfänger-Themen 4
M Frage zu Generics in Klassen, Abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 5
R Compiler-Fehler Generics Problem Java Basics - Anfänger-Themen 2
K Interface Generics, Interfaces und Listen - ich bin verwirrt. Java Basics - Anfänger-Themen 7
K Generics bei Klassen- und Interfacedeklarationen Java Basics - Anfänger-Themen 3
D toArray und Generics Java Basics - Anfänger-Themen 2
D Zwei Generics beim Überladen von Methoden Java Basics - Anfänger-Themen 3
C Erste Schritte Filter für Generics oder ähnliches Java Basics - Anfänger-Themen 2
M Frage zu Generics-Deklaration Java Basics - Anfänger-Themen 5
S Frage zu Collection-Generics in Subklassen Java Basics - Anfänger-Themen 6
J Java Generics - Frage zu Types Java Basics - Anfänger-Themen 2
M <T> Generics Java Basics - Anfänger-Themen 7
B Interface Generics: prüfen ob Interface deklariert wird Java Basics - Anfänger-Themen 18
T Polymorphie Generics-Problem Java Basics - Anfänger-Themen 2
B Hilfe beim Verständnis zu Generics Java Basics - Anfänger-Themen 7
J Array Generics Java Basics - Anfänger-Themen 3
J Generics casten Java Basics - Anfänger-Themen 14
J Generics wildcard Java Basics - Anfänger-Themen 6
E Listen und Generics Java Basics - Anfänger-Themen 9
X Generics Java Basics - Anfänger-Themen 6
M Datei einlesen mit generics? Java Basics - Anfänger-Themen 9
D Warum sind Generics mit Vorsicht zu genießen? Java Basics - Anfänger-Themen 6
M OOP Mit Generics auf Methoden zugreifen? Java Basics - Anfänger-Themen 10
S Generics Java Basics - Anfänger-Themen 4
G Generics kein Zugriff auf getter eines Objekts Java Basics - Anfänger-Themen 4
L Datentypen Problem mit Generics und null Java Basics - Anfänger-Themen 6
E Klassen java.util.ArrayList<E> als Generics Java Basics - Anfänger-Themen 16
W Interface Problem mit Generics Java Basics - Anfänger-Themen 2
M OOP Generics und Wildcards Java Basics - Anfänger-Themen 3
D Generics - Warnmeldungen Java Basics - Anfänger-Themen 2
M Polymorphie generics einsteigerprobleme Java Basics - Anfänger-Themen 3
D Vererbung Generics und Vererbung Java Basics - Anfänger-Themen 8
C Generics Array Java Basics - Anfänger-Themen 43

Ähnliche Java Themen

Neue Themen


Oben