Vector mit beliebigen Klassen an Funktion übergeben

Samarek

Aktives Mitglied
Hallo,

ich bin mir nicht ganz sicher ob das wirklich ein Anfänger Thema ist und ich glaub so ganz klar ist aus dem Titel auch nicht was ich will, aber ich erläuter es ja jetzt sowieso.

Also ...

Ich möchte eine Funktion schreiben der ich einen Vektor übergeben kann der verschiedene Klassen enthalten kann.
Die Aufrufe sollen so aussehen:
[Java]
Vector<EigeneKlasse1> alles = new Vector<EigeneKlasse1>();
funktion(alles);
[/Java]
und ...
[Java]
Vector<EigeneKlasse2> alles = new Vector<EigeneKlasse2>();
funktion(alles);
[/Java]
und ...
[Java]
Vector<Basisklasse> alles = new Vector<Basisklasse>();
funktion(alles);
[/Java]

Wie muss dazu jetzt die Funktionssignatur aussehen?
[Java]
public void funktion(Vector<???> alles)
{
...
}
[/Java]
 

Samarek

Aktives Mitglied
Nee, sorry, das war da wohl etwas irreführend benannt.

Die Klassen müssen(!!!) völlig unabhängig voneinander seien können.
 

AngryDeveloper

Bekanntes Mitglied
Schon klar. Bin davon ausgegangen er würde das so wollen (warum auch immer).
Vielleicht soll die Methode einfach nur sysout auf die Objects ausführen. :bahnhof:
Alternativ lauter instanceof (please no).

Edit:
Mehr Informationen wären also nicht schlecht, was du (TO) eigentlich machen möchtest.
 
I

irgendjemand

Gast
ist das ganze nicht wegen TYPE-EREASURE sowieso egal ?
ich mein : der einzige der meckert ist der compiler ... zur sicherheit sollte man die methoden doch eh immer mit instanceof vollstopfen um runtime-fehler zu vermeiden ...
 
B

bygones

Gast
ist das ganze nicht wegen TYPE-EREASURE sowieso egal ?
ich mein : der einzige der meckert ist der compiler ... zur sicherheit sollte man die methoden doch eh immer mit instanceof vollstopfen um runtime-fehler zu vermeiden ...

sollte man nicht - wenn man anfaengt seine methode mit instanceofs vollzustopfen ist ein grundlegender fehler im Design. Man versucht irgendwas zusammenzupressen, was nicht zusammengehoert.
 
I

irgendjemand

Gast
ist eigentlich genau die antwort die ich wollte ...

sollte TO lediglich zeigen das es wenig sinn macht klassen die überhaupt nichts mit ein ander zu tun haben in einer methode zu verarbeiten und diese dann mit instanceof vollzukrachen nur um dann aus der List die einzelnen klassen wieder zu trennen ...
 

Samarek

Aktives Mitglied
Ich versteh nicht ganz was ihr da grad redet, könnte aber auch an meinem aktuellen müdigkeitszustand liegen (gestern war Betriebsweihnachtsfeier).

Wie dem auch sei, ich feil da grad noch ein wenig dran rum und dann poste ich das Mini-Tool sowieso, dann könnt ihr euch das selber alles angucken und dran rumwerken und mir Feedback geben.
 

Evil-Devil

Top Contributor
Ich bin mir gerade nicht sicher, aber konnte man Generics nicht auch mit Interfaces nutzen? Also einfach das Interface als Typ übergeben.
 
I

irgendjemand

Gast
worüber wir uns hier gerade gedanken machen ist der punkt das es ein schlechtes design ist und auch wenig sinn macht wenn du objekte unterschiedlicher klassen die überhaupt nichts mit ein ander zu tun haben *also nicht mal eine gemeinsame basis-klasse haben oder kein gemeinsames interface implementieren* in einen Vector *oder sonstige List* zu stecken und diesen dann einer methode zu übergeben die vollgekracht ist mit instanceof - abfragen um dann klassen-spezifische dinge umzusetzen ...

mal ne gegenfrage : wofür brauchst du das überhaupt ?
 
I

irgendjemand

Gast
ich find eure ansätze in richtung OOP und interfaces ja sehr gut ... ABER

zitat TO
Die Klassen müssen(!!!) völlig unabhängig voneinander seien können

ergo : TO kann / will hier keine interfaces nutzen ...
 

TheWhiteShadow

Bekanntes Mitglied
Ich würde als Lösung folgendes vorschlagen:
Java:
Vector<? extends Basisklasse>
Damit bleiben die Methoden der Basisklasse ohne Cast und Typsicher verfügbar.

Code:
Vector<?>
entspricht:
Code:
Vector<? extends Object>
So bleiben nur Object-Methoden über.
 
B

bygones

Gast
Ich würde als Lösung folgendes vorschlagen:
Java:
Vector<? extends Basisklasse>
Damit bleiben die Methoden der Basisklasse ohne Cast und Typsicher verfügbar.

Code:
Vector<?>
entspricht:
Code:
Vector<? extends Object>
So bleiben nur Object-Methoden über.

lies die beitrage ueber dir ;-)
 

Samarek

Aktives Mitglied
mal ne gegenfrage : wofür brauchst du das überhaupt ?

Der Vector soll keine Objekte verschiedener Klassen enthalten, dass das Quatsch ist ist mir auch klar.
Die Funktion soll verschiedene Vektoren akzeptieren die jeweils unterschiedliche Objekte einer Klasse enthalten.

so dass ich der Funktion halt Vector<Baum>, Vector<Auto> oder Vector<Friteuse> übergeben kann.

... und das ganze ist auch schon seit einigen Posts gelöst, mit funktion(Vector<?> alles) ging es

... und ja, die Methode soll in der Tat nur JSONs daraus bauen, nix spezifischeres, also wenn dass alles Objects sind ist das völlig in Ordnung
 
Zuletzt bearbeitet:

Gregorrr

Bekanntes Mitglied
Der Vector soll keine Objekte verschiedener Klassen enthalten, dass das Quatsch ist ist mir auch klar.
Die Funktion soll verschiedene Vektoren akzeptieren die jeweils unterschiedliche Objekte einer Klasse enthalten.

so dass ich der Funktion halt Vector<Baum>, Vector<Auto> oder Vector<Friteuse> übergeben kann.

... und das ganze ist auch schon seit einigen Posts gelöst, mit funktion(Vector<?> alles) ging es

... und ja, die Methode soll in der Tat nur JSONs daraus bauen, nix spezifischeres, also wenn dass alles Objects sind ist das völlig in Ordnung

Genau das ist die Anwendung der Bivarianz (also der Generic Wildcard ?), wenn die darunter liegenden Objektinstanzen keine Rolle spielen, es aber auf die Struktur der Containerklassen ankommt.

Fälschlicherweise (nach alter C-Manier) wird oft instanceof benutzt und zurückgecastet, aber das ist nicht Java, dann stimmt, wie schon oben aufgeführt etwas am Design nicht, weil es ja auf die Objektinstanzen der Container ankommt.
 

Samarek

Aktives Mitglied
So, wie angekündigt ist hier mal ein Link zu dem Projekt

http://dl.dropbox.com/u/53574637/Testtool.rar

Der Grundgedanke war hier eine kleine Oberfläche zu haben mit der sich Daten verarbeiten lassen,
im Sinne von ...
Daten aus einer JSON in SQL-Befehle umwandeln oder ...
bestimmte Objekte als JSON abspeichern oder ...
um diverse Algorithmen zu testen, halt verschiedene Werte eingeben und sich dann eine Ausgabe anzeigen lassen oder ...
für was auch immer man es sonst noch brauchen kann.

das Ganze ist als Entwickler-Tool gedacht, so dass halt die genauen Algorithmen dann immer implementiert werden müssen.
Mir war es soweit schonmal in diversen Situationen recht nützlich, ich hoffe dass es auch anderen so geht.

Fühlt euch frei es zu verändern, zu erweitern oder was auch immer damit anzustellen, ich freu mich auch immer über Rückmeldungen, Email Adresse steckt im Programm
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Erste Schritte Alle möglichen ausgaben von 5 Zahlen als Vector Java Basics - Anfänger-Themen 7
C Werte im Vector in zufällige Reihenfolge bringen Java Basics - Anfänger-Themen 14
C Vector-Inhalt in zufällige Reihenfolge bringen Java Basics - Anfänger-Themen 6
J Compiler-Fehler Fehler bei Vektor (E extends Object declared in class Vector) Java Basics - Anfänger-Themen 9
J Reihenfolge im Vector lässt sich nicht drehen Java Basics - Anfänger-Themen 9
M Klassen Gesamt speicherbare Elemente in Vector? Java Basics - Anfänger-Themen 3
P Vector durchsuchen und Elemente löschen Java Basics - Anfänger-Themen 4
Z Vector in jTextField/jLabel darstellen Java Basics - Anfänger-Themen 4
P Objekte in Vector werden überschrieben Java Basics - Anfänger-Themen 4
P Array in Vector speichern Java Basics - Anfänger-Themen 2
E Methoden new Vector().add(x).add(x); ? Java Basics - Anfänger-Themen 5
F Vector istGeordnet Java Basics - Anfänger-Themen 15
R Vector-Filterfunktion Java Basics - Anfänger-Themen 4
Todesbote Map (Key=String; Value = Vector) Value/Vector sortieren Java Basics - Anfänger-Themen 13
J Vector Manipulieren.. Wie? Java Basics - Anfänger-Themen 16
M Vector eines Vectors einzeln ausgeben Java Basics - Anfänger-Themen 9
K String kommt schon in Vector vor? Java Basics - Anfänger-Themen 36
J Erzeugung eines Vector-Objekts - Frage zum Typ Java Basics - Anfänger-Themen 3
H Zugriff auf Vector Element Java Basics - Anfänger-Themen 2
C Vector erzeugt neue Indizes nach Input Java Basics - Anfänger-Themen 2
A Author in Vector Java Basics - Anfänger-Themen 22
M Vector überschreibt Elemente bei add()-Methode Java Basics - Anfänger-Themen 10
T Elemente im Vector werden einfach überschrieben! Java Basics - Anfänger-Themen 3
K Collections Vector zu String casten Java Basics - Anfänger-Themen 4
U Wozu dient ein Vector in Java? Java Basics - Anfänger-Themen 6
B Globale vector? Java Basics - Anfänger-Themen 7
E 2 Dimensionaler Vector Java Basics - Anfänger-Themen 5
T Map<String, Vector>? Java Basics - Anfänger-Themen 11
P Collections Vector füllen in for-Schleife Java Basics - Anfänger-Themen 3
J Vector Addition Java Basics - Anfänger-Themen 5
M 2D Vector Java Basics - Anfänger-Themen 2
N IndexOutOfBoundsException: Source does not fit in dest beim Kopieren von ArrayList in Vector Java Basics - Anfänger-Themen 4
M Umwandlung von Array in Vector und umgekehrt Java Basics - Anfänger-Themen 6
E Datentypen Klasse Vector aus der Standard-API anwenden Java Basics - Anfänger-Themen 7
D Klasse Vector entwerfen Java Basics - Anfänger-Themen 7
A Arrays vs Liste vs Vector Java Basics - Anfänger-Themen 30
H in for Schleife über Vector iterieren Java Basics - Anfänger-Themen 2
S Datentypen Vector auslesen Java Basics - Anfänger-Themen 12
yampi Objektsammlung - Hashtable, Vector, Arrays Java Basics - Anfänger-Themen 8
T Vector-Positin anzeigen Java Basics - Anfänger-Themen 3
C Vector - obsolete collection Java Basics - Anfänger-Themen 1
C Vector<Object> Probleme Java Basics - Anfänger-Themen 38
C Datentypen Probleme mit Vector.contains() Java Basics - Anfänger-Themen 10
M Datentypen function(Vector<SuperClass>), Vector<Subclass> Java Basics - Anfänger-Themen 6
L Vector Sortieren Java Basics - Anfänger-Themen 8
B Vector in Table ersetzen Java Basics - Anfänger-Themen 4
B Werte einer Spalte aus DB in einen Vector schreiben Java Basics - Anfänger-Themen 15
kitz Telefonbuch (Vector) Java Basics - Anfänger-Themen 17
E Arraylist mit Daten aus Vector füllen Java Basics - Anfänger-Themen 7
S Vector -> String JComboBox Java Basics - Anfänger-Themen 11
F Vector wird überschrieben Java Basics - Anfänger-Themen 8
T Vector sortiern Java Basics - Anfänger-Themen 7
C Frage zu Vector und muliplizieren des Inhaltes Java Basics - Anfänger-Themen 2
S Vector von eigenen Klassen Java Basics - Anfänger-Themen 2
J Collection Vector Java Basics - Anfänger-Themen 8
Streeber ArrayList/Vector, mehrdimensional Java Basics - Anfänger-Themen 11
N Was ist der Unterschied zwischen ArrayList und Vector? Java Basics - Anfänger-Themen 3
babel Einen Vector/Liste mit Daten prüfen Java Basics - Anfänger-Themen 31
B Hilfe zum einem Problem mit Vector Java Basics - Anfänger-Themen 8
H Vector - Fehler? Java Basics - Anfänger-Themen 2
babel einen Vector nach Datum sortieren Java Basics - Anfänger-Themen 21
T Array-Vector Problem Java Basics - Anfänger-Themen 18
P Vector und Exception Java Basics - Anfänger-Themen 7
K Vector Java Basics - Anfänger-Themen 3
K Vector Java Basics - Anfänger-Themen 10
babel ein Vector mit verschiedenen Werten auslesen und berechnen Java Basics - Anfänger-Themen 34
T Object aus Vector übergeben Java Basics - Anfänger-Themen 2
B Vector<Point> als Rückgabewert Java Basics - Anfänger-Themen 23
L Vector einem Array hinzufügen Java Basics - Anfänger-Themen 14
P Vector mit double Java Basics - Anfänger-Themen 3
P Vector Elemente auslesen Java Basics - Anfänger-Themen 9
N Anfängerfrage richtige Syntax und Frage zu Vector Java Basics - Anfänger-Themen 7
C Unterschied zwischen ArrayList und Vector Java Basics - Anfänger-Themen 2
W Vector mit String[] auslesen Java Basics - Anfänger-Themen 4
Povlsen84 Initlialisierung, Vector, serialVersionUID . kleine Fragen Java Basics - Anfänger-Themen 4
Q Vector verändert trotz final seine Größe Java Basics - Anfänger-Themen 5
B Dopplete aus Vector entfernen Java Basics - Anfänger-Themen 8
E Vector Fehler bei allen Methoden von Vector Java Basics - Anfänger-Themen 2
K Vector zu Array machen Java Basics - Anfänger-Themen 10
1 JList Problem : Synchronisation mit Vector klappt nicht :( Java Basics - Anfänger-Themen 6
L Multidimensional Vector - Recordset Java Basics - Anfänger-Themen 5
K Objektklasse mit leerem Vector füllen Java Basics - Anfänger-Themen 6
K Vector wird überschrieben Java Basics - Anfänger-Themen 7
G Vector Strijng parsen Java Basics - Anfänger-Themen 6
K vector cannot be resolved Java Basics - Anfänger-Themen 3
G Zeichenkette suchen in Vector-Klasse Java Basics - Anfänger-Themen 11
R fehler beim incrementellen schreiben in einen vector Java Basics - Anfänger-Themen 11
M ObjectInputStream, Object und Vector<Object> Java Basics - Anfänger-Themen 4
G Vector, equal & Casts Java Basics - Anfänger-Themen 5
N Objekte in einen Vector packen oder nicht? Java Basics - Anfänger-Themen 3
D Frage zu Vector Java Basics - Anfänger-Themen 7
S Problem mit Vector Java Basics - Anfänger-Themen 2
G Object[] [] nach vector casten. Java Basics - Anfänger-Themen 3
G 2D vector zugriff auf elementinterne elemente wie Java Basics - Anfänger-Themen 3
G vector in neuem vector sortieren Java Basics - Anfänger-Themen 3
G jede 2te zeile in vector leer einfügen, wie? Java Basics - Anfänger-Themen 4
G vector füllt sich immer weiter. wo muss ich ihn leeren? Java Basics - Anfänger-Themen 3
V Vector/Arraylist hat nur gleiche Einträge Java Basics - Anfänger-Themen 3
G Vector eigenen Typs mit Daten füllen Java Basics - Anfänger-Themen 20
H Vector und Dateien Java Basics - Anfänger-Themen 27

Ähnliche Java Themen

Neue Themen


Oben