casten und Generics

Status
Nicht offen für weitere Antworten.

Milo

Bekanntes Mitglied
Hallo,

was muss ich anstellen, um ein Objekt zu einer Map mit Gererics zu casten?

Code:
Map<String, Setting> m = (Map<String, Setting>) obj;

liefert mir eine Warnung in Eclipse "Wertigkeit und Beschreibung Pfad Ressource Position Erstellungszeit ID Sicherheit bei der Eingabe: Die Umsetzung von Object auf Map<String,Setting> wird eigentlich gegen den gelöschten Typ Map abgeglichen"

Wie kann ich diese umgehen?

Gruß Micha
 

Wildcard

Top Contributor
Also mit den Deutschen Übersetzungen kann man wirklich gar nichts anfangen :?
Was umgehen? Das ist eine Warnung, kein Fehler. Da steht das es nicht typsicher ist, weil es eben nicht typsicher ist, was will man daran umgehen?
 

Milo

Bekanntes Mitglied
Hi Wildcard,

ja, die Übersetzung war wenig hilfreich. Frag ich anders, gibt es hier einen Weg, mein Vorhaben ohne Warnung zu realisieren?

Gruß Micha
 

musiKk

Top Contributor
Also wenn es das ist, was ich denke das es ist, dann umgeht man das mit einem @SuppressWarnings("unchecked") vor der Methode, aber vielleicht liege ich auch daneben. Wie stellt man Warnings denn auf deutsch um? Nicht, dass ichs machen will... rein aus Neugier...
 

Andreas29

Bekanntes Mitglied
@musiKk:
Es ist genau das, was du denkst, das es ist und ein SupressWarning wird das ganze beheben.

@threadersteller (sorry, habe den namen im moment nicht da...)
Zwei Dinge möchte ich dir noch mitgeben:
1. Wenn du in Eclipse eine Warnung liest, bekommst du meistens mit Strg + 1 einen passenden Tipp (wenn der Cursor in der Zeile steht, die die Warnung verursacht)
2. Nur damit du verstehst, warum diese Warnung zustande kommt:
Aller Wahrscheinlichkeit nach bekommst du deine Map aus einem anderen Stück Source, der keine Generics verwenden (entweder, weil er mit Java 1.4 oder älter geschrieben wurde oder weil der Autor keine Generics verwendet hat). Das führt dazu, dass java dir zur Kompelierzeit nicht versprechen kann, das dein Cast zur Laufzeit funktionieren wird, da java wg der fehlenden Generics nicht weiß, was in der Map drin ist. Und wenn eine Map keine Generics hat, ist sie identisch mit einer Map<Object, Object>, es könnte also alles mögliche drin sein. Java will dir also sagen:
Pass auf, hier kann was schief gehen.
Wenn du dir sicher bist, das an deiner Stelle die Map nur so ankommen kann, wie du sie beschrieben hast, mach über die Methode ein SuppressWarnings("unchecked") und es ist Ruhe. Wenn du dir nicht sicher bist, solltest du (meiner Meinung nach) die Generics weglassen (oder eben Object, Object schreiben) und beim durchlaufen der Map (oder wie immer du die Objekte dort rausholst) einzeln prüfen, was du hast.

Grüße,
Andy
 
S

SlaterB

Gast
man kann
@SuppressWarnings("unchecked")
auch genau vor diese Codezeile setzen, dann wird diese sinnvolle Überpürfung nicht gleich für einen großen Bereich deaktiviert,

funktioniert nur vor Variablendeklarationen und ich muss das jedesmal von vor der Merhode verschieben,
weiß jemand ob man das direkt vor die Deklaration erzeugen kann?

----

und man schreibt dann übrigens, wie die Fehlermeldung eigentlich bemängelt

Map<String, Setting> m = (Map) obj;

auf Map muss man casten,
das generische kann man dagegen nicht casten (bzw. bringt nix), nur die dazugehörige Warning ausschalten
 

Milo

Bekanntes Mitglied
Hallo,

vll hätte ich es zuschreiben sollen. Das Objekt kommt aus einem xstream-Objekt (also einer XML-Datei), die ich zum Speichern von Projekten erzeuge. In deser Datei sind eben die Einstellungen, die der User setzt, drin. Da dieser verschiedene Typen haben (Int, String, Boolean), hatte ich nach dem Beispiel aus der Insel ein "Transportobjekt erzeugt und alle 'Boxen' in einer Map zusammen gefasst. Das ganze schreib ich nun raus und wills natrürlich auch wieder lesen. Beim lesen bekomme ich eben diese Warnung. Die Methode .fromXML() vom XStream liefert mir also ein reines Objekt zurück (ohne Generics) - was letztlich Deinem Fall 2 entspricht, Andreas.

@MusiKk: In dem Du vermutlich Eclipse in deutsch laufen lässt, da hat man wohl alles übersetzt?!

@SlaterB: Okay, danke. Ich denke ich habs soweit verstanden.

Gruß Micha
 

musiKk

Top Contributor
SlaterB hat gesagt.:
man kann
@SuppressWarnings("unchecked")
auch genau vor diese Codezeile setzen, dann wird diese sinnvolle Überpürfung nicht gleich für einen großen Bereich deaktiviert
My bad. Ich hatte das mal probiert und es hatte nicht geklappt, aber das war dann wohl nur eine Zuweisung und nicht die Deklaration. Das werd ich nächste Woche mal anpassen. ;)
 

Milo

Bekanntes Mitglied
Hi,

funktioniert, wie ich gerade getestet habe:

Code:
@SuppressWarnings("unchecked")
Map<String, Setting> map = (Map)xstream.fromXML( xml.toString() );
this.setGlobalSettings(  map );

Gruß Micha
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Generics casten Java Basics - Anfänger-Themen 14
tom.j85 TicTacToe - probleme beim Casten Java Basics - Anfänger-Themen 6
B Datentypen Welcher Typ wird beim Casten übernommen? Java Basics - Anfänger-Themen 12
G Probleme beim casten von double zu int Java Basics - Anfänger-Themen 3
BuTTerBroTHDx Char Wert in int casten ? Java Basics - Anfänger-Themen 4
A Vererbung Mit Casten direkt auf Sub-Klasse Zugreiffen Java Basics - Anfänger-Themen 6
N Variablen zurück casten Java Basics - Anfänger-Themen 3
F Casten bei Implements Java Basics - Anfänger-Themen 2
S Klassen casten, IS-A Beziehung Java Basics - Anfänger-Themen 5
U Klassen Dynamisches Casten? Java Basics - Anfänger-Themen 39
T Probleme beim casten Java Basics - Anfänger-Themen 9
M Casten Java Basics - Anfänger-Themen 2
K Collections Vector zu String casten Java Basics - Anfänger-Themen 4
S Polymorphes Objekt in eigentliche Klasse casten Java Basics - Anfänger-Themen 6
masii Methoden Parameter casten? Java Basics - Anfänger-Themen 2
D Datentypen Abstrakter Datentyp lässt sich nicht casten Java Basics - Anfänger-Themen 7
U ArrayList casten Java Basics - Anfänger-Themen 37
F g.drawLine in g 2D casten Java Basics - Anfänger-Themen 5
A Klassen ArrayList richtig / sicher Casten? Java Basics - Anfänger-Themen 3
J Frage zu generischer Klasse und Casten Java Basics - Anfänger-Themen 14
M Frage zum Casten von Objekten Java Basics - Anfänger-Themen 5
M sicheres/unsicheres Casten bei Objekten Java Basics - Anfänger-Themen 13
D Object auf JTextpane / jTextArea casten? Java Basics - Anfänger-Themen 3
B Casten oder vielleicht was anderes? Java Basics - Anfänger-Themen 9
T Boolean in ein Objektdatentyp casten möglich? Java Basics - Anfänger-Themen 5
J Casten (Typumwandlung) Java Basics - Anfänger-Themen 12
P Casten Hash Map Java Basics - Anfänger-Themen 4
W Auf 'this' casten Java Basics - Anfänger-Themen 3
M Dynamisches Casten mal wieder Java Basics - Anfänger-Themen 4
M casten Java Basics - Anfänger-Themen 11
D Casten eines Objekts: Funktion der Oberklasse aufrufen Java Basics - Anfänger-Themen 4
G Datentypen char to int casten - falsches Ergebnis! Java Basics - Anfänger-Themen 6
S casten array in int von float Java Basics - Anfänger-Themen 5
A Dynamisches casten Java Basics - Anfänger-Themen 19
C Probleme beim casten und Objekt zugriff Java Basics - Anfänger-Themen 12
P Klasse nach Element casten Java Basics - Anfänger-Themen 4
G Double casten Java Basics - Anfänger-Themen 8
O Object nach Double casten Java Basics - Anfänger-Themen 11
L Object[] in String[] casten Java Basics - Anfänger-Themen 7
V Gelesene FTP Datei richtig casten Java Basics - Anfänger-Themen 9
T Properties casten Java Basics - Anfänger-Themen 4
G Arrays casten? Java Basics - Anfänger-Themen 12
G string "null" in null casten Java Basics - Anfänger-Themen 3
S Objekt Casten Java Basics - Anfänger-Themen 4
G String nach int casten Java Basics - Anfänger-Themen 5
G Vektor auslesen und als int Variable casten Java Basics - Anfänger-Themen 4
G String in Date casten. Java Basics - Anfänger-Themen 7
G String in Date casten Java Basics - Anfänger-Themen 4
G String in Long casten Java Basics - Anfänger-Themen 2
G Object[] [] nach vector casten. Java Basics - Anfänger-Themen 3
G printStackTrace(); in String casten Java Basics - Anfänger-Themen 3
G String in int casten Java Basics - Anfänger-Themen 2
G Integer[] nach int[] casten - wie? Java Basics - Anfänger-Themen 2
D Arrays casten Java Basics - Anfänger-Themen 12
G Casten ? Java Basics - Anfänger-Themen 3
HaukeG Casten to String und Vergleichen Java Basics - Anfänger-Themen 2
G ich komm nicht weiter -> String in int casten Java Basics - Anfänger-Themen 4
T Casten von Choice auf Vector oder Object[] Java Basics - Anfänger-Themen 14
B Vector nach float[] casten Java Basics - Anfänger-Themen 6
G String zu byte[] "casten"? Java Basics - Anfänger-Themen 3
M Hin und Her Casten Object->int und int->Object Java Basics - Anfänger-Themen 3
T Typsicheres casten eines Objects Java Basics - Anfänger-Themen 5
D Object[] in Liste casten? Java Basics - Anfänger-Themen 8
T Chaosprogrammierer hat einen fehler beim casten? Java Basics - Anfänger-Themen 5
J Attribut casten Java Basics - Anfänger-Themen 3
A Array mit generischen Typen casten? Java Basics - Anfänger-Themen 6
C Automatisches Casten => inkompatibel Java Basics - Anfänger-Themen 7
G Byte-Code einlesen und zu Hex casten Java Basics - Anfänger-Themen 2
T Object[] zu String[] casten? Java Basics - Anfänger-Themen 3
R Double nach Integer casten Java Basics - Anfänger-Themen 8
L Adresse in String[] casten Java Basics - Anfänger-Themen 6
M Object auf Interface casten? Geht das? Java Basics - Anfänger-Themen 21
U ArrayLists und Casten Java Basics - Anfänger-Themen 2
O TreeMap nach Object[] casten? Java Basics - Anfänger-Themen 3
M Casten bei Objekten? Java Basics - Anfänger-Themen 4
S casten von Interface zu Klasse unterbinden Java Basics - Anfänger-Themen 15
M long nach String casten Java Basics - Anfänger-Themen 2
U String nach Integer Casten. Java Basics - Anfänger-Themen 4
G Sting nach int casten Java Basics - Anfänger-Themen 13
A Object casten? Java Basics - Anfänger-Themen 3
R Casten Java Basics - Anfänger-Themen 3
F Casten: Object nach Array Java Basics - Anfänger-Themen 10
M Casten Java Basics - Anfänger-Themen 2
H komme mit casten nicht klar 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

Ähnliche Java Themen

Neue Themen


Oben