ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
165
165
EMPFEHLEN
-
Hallo
Ich habe eine Frage bezüglich Objekt-Orientierung
Ich leite in der GUI Schicht meines Programms einen Baum aus einem Graphen der App Schicht ab. Jeder Knoten des Baumes implementiert das Interface INode. Jeder Knoten des Graphen implementiert ICollectorNode. Da der Baum und der Graph über das Proxy Pattern verbunden sind, gilt: ICollectorNode extends INode. Ich möchte die GUI schicht entkoppelt haben, sodass sie keine Kenntnisse über das Interface ICollectorNode haben soll. Mein Problem ist wie folgt:
Ich möchte wenn ich die Methode childrenIterator auf INode aufrufe einen Iterator<INode> erhalten. Wenn ich aber auf ICollectorNode childrenIterator aufrufe einen Iterator <ICollectorNode>. D.h. wenn ich aus der GUI schicht auf die Appschicht zu greife erhalte ich INodes und wenn ich in der Appschicht intern arbeite, möchte ich ICollectorNodes erhalten. Das ganze wäre ja mit Co-Varianz gelöst. Blöderweiset unterstützt Java keine Covarianz von Generics, also z.b. List<A> ist kein SubTyp von List<B> selbst wenn A von B erbt...
Hat jemand eine Idee für eine saubere Lösung?
Grüße und Danke!!
-
Mit Wildcards sollte das kein Problem sein.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
package de.tutorials; import java.util.Iterator; public class GenericTest { interface INode { } interface ICollectorNode extends INode { } interface IGraph { public Iterator<? extends INode> getNodes(); } public static class InternalGraph implements IGraph { @Override public Iterator<ICollectorNode> getNodes() { return null; } } public static class GUIGraph implements IGraph { @Override public Iterator<INode> getNodes() { return null; } } }
So in der Art. Achte nur darauf dass ein ? extends XYZ eigentlich nicht in der public API nach außen gegeben werden sollte. Was anderes fällt mir nur gerade nicht ein.
-
Hi danke für die Antowort
Wenn man von der spezialisierten Klasse INodes will, klappt das super. Wenn man aber intern arbeitet, aber trotzdem gegen Interfaces programmiert muss man immer von INode auf ICollectorNode umcaste...
Ähnliche Themen
-
[IE7 Problem] Problem mit ul/li Höhen im IE7 bei Verwendung eines vertikalen Menüs
Von josDesign im Forum CSSAntworten: 0Letzter Beitrag: 11.01.11, 21:40 -
Problem: Flash MX (7.1) exportiert meine Fla nicht mehr - dringendes Problem
Von Lukasz im Forum Flash PlattformAntworten: 4Letzter Beitrag: 22.03.06, 20:50 -
Problem mit hover- background ändern & Problem bei Reload
Von ollioollio im Forum CSSAntworten: 0Letzter Beitrag: 06.10.04, 14:03 -
PROBLEM! Pinnacle 2 GB Begrenzung Windows 2000 DC 50 PROBLEM!
Von hennym im Forum Videoschnitt, Videotechnik & -produktionAntworten: 6Letzter Beitrag: 17.09.03, 22:09 -
Problem mit PopUp (Ja ich weiss Suche benutzten, hab ein ganz anderes Problem)
Von killkrog im Forum Javascript & AjaxAntworten: 6Letzter Beitrag: 13.06.02, 12:29





Zitieren

Login





