Einen String in einen Variablentyp verwandeln

Status
Nicht offen für weitere Antworten.

alexki

Mitglied
Hallo,

ich suche eine Möglichkeit folgendes zu realisieren:

3 Klassen: Liste, Person, Auto

Ich möchte in der Liste ein Array erzeugen, das den Variablentyp einer Klasse trägt, also z.B. Auto oder Person oder sonst was....

Leider kann man den String, den man z.B. bei person1.getclass(); zurückbekommt, nicht als einen Variablentyp verwenden.

Code:
person1.getclass() obj1 = new  person1.getclass();
//Das funktioniert dann nicht.

Gibt es in Java eine Möglichkeit, das was ich vor habe in einer anderen Weise umzusetzen?
 

mikachu

Top Contributor
Code:
Person obj = (Person)Class.forName( Person.class() ).newInstance();

noch nen paar exceptions handlen aber dann sollte es gehn

#edit 1: nee, das war nicht gemeint...

Code:
List<Class> liste = new ArrayList<Class>();

liste.add( Person.class() );
liste.add( Auto.class() );
//usw...

verwende lieber ne liste als nen array
 
B

bygones

Gast
aus erfahrung sind solche ansaetze zu 99% falsch durchdacht....

bevor du also dich mit Reflections auseinandersetzt wette ich mit dir, wenn du es genauer beschreibst wird man dir eine einfachere und elegantere loesung geben koennen !
 

alexki

Mitglied
Was ich vor habe, hatte ich bereits einigermaßen in meinen anderen beiden Threads beschrieben:

www.java-forum.org/de/viewtopic.php?t=54342&highlight=

www.java-forum.org/de/viewtopic.php?t=54548&highlight=


Ich hatte das Problem auch schließlich mit Hilfe von Interfaces gelöst, nur dann meinte mein Chef ist scheiße, da man nicht nach allen Attributen der Objekte sortieren kann.


@mika.fhdw

Doch ich habe sie gelesen und gleich ausprobiert, nur zeigt mir Eclipse überall fehler, dass er z.B. add nicht kennt.
Und ehrlich gesagt verstehe ich das nicht ganz.
Muss bei <class> auch wirklich das stehen oder hast du das als Platzhalter für eine echte klasse von mir reserviert?
java.util.* habe ich importiert
 
S

SlaterB

Gast
alexki hat gesagt.:
Ich hatte das Problem auch schließlich mit Hilfe von Interfaces gelöst, nur dann meinte mein Chef ist scheiße, da man nicht nach allen Attributen der Objekte sortieren kann.

wenn du nicht weißt, welch Klasse ein Objekt hat, wie willt du dann nach dessen Attributen sortieren?
selbst wenn du irgendwie durch Zauberhand eine solche dynamische Variable hättest,
sie nützt dir null komma nix, du kannst nix damit anfangen!

überlege doch erstmal zu Ende, was überhaupt damit passieren soll..
 

alexki

Mitglied
Aufgabe die ich zu Lösen habe:

- Eine Klasse die "Liste" heißt soll verschiedene Objekte aufnehmen können z.B. Haus, Auto, Person, usw.
- Die Klasse "Liste" soll die Objekte die es aufnimmt sortieren können. Das habe ich mit einem Bubblesort verfahren gelöst und indem ich z.B. an das Objekt "Person" eine andere Person aus der Klasse Liste übergebe und diese sich vergleichen (mit compareTo). Anhand des Rückgabewerts wird die Person entweder nach oben oder nach unten in der Liste verschoben.
- Das Problem: Die Klasse Liste soll nur einmal programmiert werden und nicht mehr verändert, egal welche Klassen verglichen werden!


Da ich hier bereits mehrmals gehört habe, dass ich die ein völlig falsches Konzept habe.
Bin ich jetzt für alle Lösungsvorschläge offen :roll:
 

alexki

Mitglied
@mika.fhdw

ja das C ist groß

der sagt mir: Syntax error on token "add", Identifer expected after this token
 
S

SlaterB

Gast
für die Liste und den Sortieralgoritmus ist es völlig egal, was das aktuell für Objekte sind,
die einzig interessante Info ist, dass es eine compareTo() Operation gibt,
diese Operation regelt alles,
wenn du Personen hast dann vergleicht compareTo in der Klasse Person
ansonsten die entsprechende Operation in den anderen Klassen

lies dir auch mal
http://www.galileocomputing.de/openbook/javainsel6/javainsel_11_004.htm
11.4 Vergleichen von Objekten
durch
 

mikachu

Top Contributor
und warum hat dein chef was gegen interfaces ?!?

tja, dann nimmste halt ne abstrakte klasse, welche alle anderen klassen (Auto, Person, ...) erweitern.
dann tust du die instanzen der abstrakten klasse in die liste hinzufügen, und vergleichen eben.

aber die brauchen erstmal einen gemeinsamen nenner... die ganzen klassen, und sowas verweist gezwungenermaßen auf a) ein interface oder b) eine abstrakte klasse...
 
B

bygones

Gast
sorry - wenn dein Chef der ansicht ist, dass das schlecht ist mit interface, dann soll er bitte erklaeren wie dann...

wie schon geschrieben... man kann NICHT einfach mal jedes beliebige Objekt sortieren lassen, da du nicht weisst wie eine Ordnung ueber jedes beliebige Objekt zu definieren ist...

Dazu noch, wenn du ueber alle Attribute einer Klasse sortieren willst, woher weisst du welche Attribute es gibt und auch hier wieder - wie sortiert man diese ?

nein... alles ANDERE ausser Interfaces ist hier unsinnig....

is ja n interessanter chef... bin gespannt wie er das dann loesen wuerde.


loesungsvorschlaege:

um ein Objekt sortieren lassen zu koennen, muss es das Comparable Interface implementieren. Die dazugehoerige compareTo methode bestimmt die Ordnung der Objekte.

Nachteil - man kann nur nach einem Kriterium sortieren lassen, man kann die Klasse nicht zu untersch. zeiten untersch. sortieren lassen.

Hierzu brauchst du sog. Comparator. D.h. fuer jede art der gewuenschten Sortierung muss dann ein entsprechender Comparator existieren, der 2 objekte nach den gegebenen Kriterien sortiert.


Eine komplett 100% generische Loesung geht nicht... muss sich dein chef damit abfinden !
 

Wildcard

Top Contributor
Naja, mit dem Erweiterungs Objekt Entwurfsmuster (zum Beispiel IAdaptable in Eclipse) ginge das schon...
Wenn die Objekte selbst gar kein Interface implementieren dürfen, dann müsste es über einen AdapterManager/ExtensionRegristry (oder wie auch immer man es nennen möchte) realisiert werden.
Dann müssen allerdings auch entsprechende Erweiterungsobjekte für jeden Objekttyp her.
 

Leroy42

Top Contributor
alexki hat gesagt.:
Aufgabe die ich zu Lösen habe:

- Eine Klasse die "Liste" heißt soll verschiedene Objekte aufnehmen können z.B. Haus, Auto, Person, usw.
- Die Klasse "Liste" soll die Objekte die es aufnimmt sortieren können.

Hier habe ich bereits Verständnisschwierigkeiten.

Beinhaltet eine Instanz dieser Klasse Liste jeweils nur Objekte desselben Typs,
oder kann sie auch Objekte verschiedenen Typs beherbergen. Falls letzteres gilt, wie
um alles in der Welt soll denn ein Haus mit einer Person verglichen werden? ???:L :shock:

Wenn vorausgesetzt wird, das eine Instanz dieser Liste nur gleichartige
Instanzen aufnehmen kann, müssen diese Objekte das Interface Comparable
(und damit die Methode compareTo()) implementieren und können dadurch
in der Sortiermethode der List-Klasse durch Aufruf von compareTo
sortiert (miteinander verglichen) werden.
 

Leroy42

Top Contributor
Wildcard hat gesagt.:
Naja, mit dem Erweiterungs Objekt Entwurfsmuster (zum Beispiel IAdaptable in Eclipse) ginge das schon...
Wenn die Objekte selbst gar kein Interface implementieren dürfen, dann müsste es über einen AdapterManager/ExtensionRegristry (oder wie auch immer man es nennen möchte) realisiert werden.
Dann müssen allerdings auch entsprechende Erweiterungsobjekte für jeden Objekttyp her.

Ach du ahnst es nicht! :shock:
IAdaptable, AdapterManager, ExtensionRegristry, Erweiterungsobjekte für jeden Objekttyp

Das ist, denke ich, eindeutig zu hoch gegriffen, für die Art der
Aufgabenstellung... :(
 
S

SlaterB

Gast
dieser Chef hat nunmal ein gewisses Niveau,
dem kann man nicht jede Lösung andrehen ;)
 

Leroy42

Top Contributor
SlaterB hat gesagt.:
dieser Chef hat nunmal ein gewisses Niveau,
dem kann man nicht jede Lösung andrehen ;)

Ich denke mal, dass dieser Chef mit deinen Bezeichnungen
IAdaptable, AdapterManager, ExtensionRegristry, Erweiterungsobjekte für jeden Objekttyp
weniger als ich anfangen kann.

Und das will was heissen: :meld:

Ich selbst kann nämlich mit keinen deiner Begriffe irgend etwas anfangen! :( ( :cool: )
 

Wildcard

Top Contributor
Es handelt sich lediglich um ein Entwurfsmuster bei dem es darum geht, Objekte ohne deren Wissen um beliebige Funktionalität zu erweitern. An sich ein äusserst nützliches Muster.
Das Muster ist allerdings sauberer und schöner wenn man sich an die Einladungsregel hält. Dazu sollte jedes Objekt ein Schittstelle implementieren die es erweiterbar macht.
Bei Eclipse ist das zum Beispiel IAdaptable.
In diesem Fall würde das also bedeuten auf ein Interface zu verzichten um ein anderes einzubauen :lol:
 

Leroy42

Top Contributor
IAdaptable

Sieht ja interessant aus! Ich werde mir das mal bei Gelegenheit reinziehen. :)

Edit: Vielleicht offenbart sich mir dann auch, für was ich das so dringend brauche;
Noch bin ich ohne derlei zurechtgekommen; aber man weiß ja nie... :cool:
 
B

bygones

Gast
Wildcard hat gesagt.:
Es handelt sich lediglich um ein Entwurfsmuster bei dem es darum geht, Objekte ohne deren Wissen um beliebige Funktionalität zu erweitern.
und das kannst du mit deinem gewissen vereinbaren ;-)

Wildcard hat gesagt.:
In diesem Fall würde das also bedeuten auf ein Interface zu verzichten um ein anderes einzubauen :lol:
hehe - stimmt - deins klingt aber cooler :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
M Kommandozeilenparamter als EINEN String werten Java Basics - Anfänger-Themen 5
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
O Ich habe einen String und soll mit matches schauen, ob ein Buchstabe zu einer geraden ANzahl im String vorkommt, wie soll das gehen? Java Basics - Anfänger-Themen 7
J Eintrag Combobox über einen String auswählen Java Basics - Anfänger-Themen 3
J Eine Position im String durch einen Integer - Wert teilen Java Basics - Anfänger-Themen 5
N Wie kann ich einen String wieder zusammensetzen und ausgeben lassen? Java Basics - Anfänger-Themen 9
T Fehlermeldung beim Versuch, einen String einzulesen Java Basics - Anfänger-Themen 4
J Wie kann ich z.B. einem int-Wert einen String-Wert zuweisen? Java Basics - Anfänger-Themen 2
J Mit for Schleife einen String Rückwärts befüllen Java Basics - Anfänger-Themen 9
J Aufruf einer Methode über einen String Java Basics - Anfänger-Themen 11
S Das Anführungszeichen(") Zeichen in einen String setzen Java Basics - Anfänger-Themen 1
P Einen String mittig zeichnen? Java Basics - Anfänger-Themen 1
J Erste Schritte Wie kann ich einen String in eine If einbauen :)? Java Basics - Anfänger-Themen 12
OlafHD Einen String an eine Klasse übergeben Java Basics - Anfänger-Themen 2
Silvascus Inhalt eines externen Textdokuments an einen String übergeben Java Basics - Anfänger-Themen 2
E Was ergibt trim() auf einen leeren String Java Basics - Anfänger-Themen 3
S Funktion die mir fuer einen String eine Zahl zwischen 0.0 und 1.0 zurueckliefert..? Java Basics - Anfänger-Themen 9
A Wie kann man einen zufälligen String aus einem StringArray auswählen? Java Basics - Anfänger-Themen 6
A Variablen Übergeben des Inhalts einer Variable in einen String Java Basics - Anfänger-Themen 17
D Daten von einem int in einen string Java Basics - Anfänger-Themen 5
M Möglich? Methode aufrufen deren Bezeichner zur Laufzeit durch einen überg. String festgelegt wird Java Basics - Anfänger-Themen 3
D Datentypen Ein Integer Feld in einen String wandeln ohne Nullenunterdrückung Java Basics - Anfänger-Themen 6
C Ein String in einen anderen String "übergeben" Java Basics - Anfänger-Themen 14
W Buttons sollen bei Mausklick einen String schreiben Java Basics - Anfänger-Themen 11
M Quelltext auslesen und diesen in einen String schreiben Java Basics - Anfänger-Themen 3
B Aus Text Zeile einen String herauslesen Java Basics - Anfänger-Themen 11
W In einen String schreiben Java Basics - Anfänger-Themen 9
L Problem beim Einlesen einer Datei in einen String Java Basics - Anfänger-Themen 12
S Einen neuen String ohne Array oder List erzeugen??? Java Basics - Anfänger-Themen 13
W elemente eines arrays in einen string schreiben Java Basics - Anfänger-Themen 3
L mit "assert" einen String prüfen Java Basics - Anfänger-Themen 5
J String soll einen Zahlenwert ausgeben? Java Basics - Anfänger-Themen 9
eXistenZ wert von einem String auf einen Integer ändern =( Java Basics - Anfänger-Themen 6
B Datentypen Char Array in einen String verwandeln? Java Basics - Anfänger-Themen 2
B Listeinträge in einen String schreiben Java Basics - Anfänger-Themen 4
Z Wie Byte[] in einen String oder int konvertieren Java Basics - Anfänger-Themen 2
R einen gegebenen String in einem String suchen Java Basics - Anfänger-Themen 6
S Prüfen, ob ein String einen Bindestrich enthält Java Basics - Anfänger-Themen 3
S BBCodes in einen String setzen Java Basics - Anfänger-Themen 7
Antoras Einen zufälligen String auswählen Java Basics - Anfänger-Themen 5
K Wie zerlege Ich einen String zum Rechnen? Java Basics - Anfänger-Themen 3
E Einen String auch über die Laufzeit hinaus speichern Java Basics - Anfänger-Themen 4
M Variablenbezeichner in einen String umwandeln Java Basics - Anfänger-Themen 4
P Methode um einen String zu überprüfen Java Basics - Anfänger-Themen 12
I Server / Client Programm wie einen String übergeben? Java Basics - Anfänger-Themen 6
N Aus Textdatei jede Zeile in einen String lesen Java Basics - Anfänger-Themen 22
N Wie caste ich ein Object in einen String? Java Basics - Anfänger-Themen 7
M Wie ersetzt man einen String mit eckigen Klammern Java Basics - Anfänger-Themen 5
T StackTrace in einen String speichern Java Basics - Anfänger-Themen 3
halla Character-Array in einen String umwandeln Java Basics - Anfänger-Themen 3
F Leerzeichen in einen String einfügen. Java Basics - Anfänger-Themen 15
J Lesen einer Datei in einen String oder Char? Java Basics - Anfänger-Themen 3
T In einer HashMap einen String löschen Java Basics - Anfänger-Themen 20
G Ein int zu in einen String umwandeln? Java Basics - Anfänger-Themen 9
S Einen langen String beim Leerzeichen in zwei Strings zerlege Java Basics - Anfänger-Themen 3
N an einen String[] hinten einen String hinzufügen Java Basics - Anfänger-Themen 8
G einen int-wert als String ausgeben Java Basics - Anfänger-Themen 4
J Datei öffnen und String durch einen anderen String ersetzen. Java Basics - Anfänger-Themen 15
C Hex-String ind einen byte[] umwandeln? Java Basics - Anfänger-Themen 6
D String in einen primitiven datentypen parsen Java Basics - Anfänger-Themen 3
T Color aus einen String Java Basics - Anfänger-Themen 5
G Elemente in einem String-Array in einen String umwandeln Java Basics - Anfänger-Themen 2
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
S Timer vs ExecutorService: jeden Sonntag um 14.00 Uhr einen Task starten..? Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
X wie bekomme ich durch Eingabeaufforderung definierte double in einen Befehl, welcher 3 erwartete double braucht? Java Basics - Anfänger-Themen 3
P Gibt es einen anderen Weg um "{}" in IntelliJ zu schreiben? Java Basics - Anfänger-Themen 5
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
F Hat es noch einen Sinn, alte Versionen zu lernen Java Basics - Anfänger-Themen 45
N Kann man einen Iterator nur einmal verwenden Java Basics - Anfänger-Themen 5
FireHorses Einen Command erst nach einer Chateingabe aktivieren Java Basics - Anfänger-Themen 1
F Wie kann ich eine Funktion schreiben, die nur in bestimmten Fällen einen Wert zurückgibt? Java Basics - Anfänger-Themen 5
berserkerdq2 Brauche ich while != -1, wenn ich immer einen BufferedReader verwende? Java Basics - Anfänger-Themen 8
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
N Gibt es hierfür einen Shortcut Java Basics - Anfänger-Themen 5
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
K Wie verneine ich einen Regex? Java Basics - Anfänger-Themen 2
berserkerdq2 Wie würde man einen regulären Ausdruck in Java schreiben, der prüft, dass zwei bestimtme Zahlen nicht nebeneinadner sind? Java Basics - Anfänger-Themen 3
M Wie kann eine Methode für ein vorhandenes "Array von char" einen Index-Wert zurückliefern? Java Basics - Anfänger-Themen 3
O Ich ahbe einen char und diesen soll ich bei .matches prüfen, also ob der char in meiner Zeichenkette vorhanden ist, wie mache ich das? Java Basics - Anfänger-Themen 9
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
D Einen boolischen Wert aus einer Methode in einer anderen Klasse aufrufen? Java Basics - Anfänger-Themen 11
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
Poppigescorn Mithilfe einer Arrayliste einen Notenspiegel ausgeben Java Basics - Anfänger-Themen 12
L GUI- wie cancel ich einen Timer? Java Basics - Anfänger-Themen 10
S Aus verschachtelter ArrayList auf einen Wert zugreifen Java Basics - Anfänger-Themen 4
LetsSebi Methode, die einen arry von objekten speichert in einer datei Java Basics - Anfänger-Themen 6
Devin Wo kann man einen Java Lehrplan finden? Java Basics - Anfänger-Themen 5
J Ist es möglich einen int Array wirklich leer zu initialisieren oder zu füllen? Java Basics - Anfänger-Themen 21
P Welche Zeile in Tadople gibt einen compiler error? Java Basics - Anfänger-Themen 5
S First Time Mave: Wie ergänze ich einen Source-Folder? Java Basics - Anfänger-Themen 10
M Pfadprobleme - Zugriff auf einen Ordner im Workspace Java Basics - Anfänger-Themen 17
P Methode die eigentlich einen Scanner benötigt mit toString() Java Basics - Anfänger-Themen 5
S Erste Schritte Button einen Wert zuweisen & diesen ausgeben Java Basics - Anfänger-Themen 2
M Auf einen Array innerhalb eines Objekts zugreifen Java Basics - Anfänger-Themen 5
V_Fynn03 Erste Schritte Einen Wert in ein TextField einfügen aus einer anderen Klasse Java Basics - Anfänger-Themen 3
J Hat jemand einen Lösungsansatz für diese Aufgabe? Java Basics - Anfänger-Themen 1
F Hilfe für einen Anfänger! Java Basics - Anfänger-Themen 4
O Ziehen im Array um einen Schritt in eine einzige beliebige Richtung Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben