Warnung bei toArray() wegen Typenunsicherheit

takidoso

Erfahrenes Mitglied
Hallo und Halli,
ich bin leider erst seit kurzem dabei mit Generics zu arbeiten.
Das grobe Prinzip habe ich verstanden so denke ich aber nun bekomme ich eine Warnung wenn ich versuche aus einem Properties-Object die Werte zu bekommen um daraus ein Array zu machen. sieht folgendermaßen aus:
Code:
String [] propTokens = new String[m_config.getPropertiesForCall().size()];
m_config.getPropertiesForCall().values().toArray(propTokens);

die Warnung lautet:
Type safety: The method toArray(Object[]) belongs to the raw type Collection. References to generic type Collection<E> should be parameterized

Naja ich kann die Warnung irgendwie ganz gut verstehen, weiß aber trotzdem nicht was ich in diesem Fall syntaktisch tun muss um dem Compiler klar zu legen das es sicher hier um eine String-Collection handelt also "Collection<String>"

Hat da jemand einen guten Vorschlag?

mit bestem Dank im Voraus

Takidoso
 
Hallo,
du must deine m_config mit Generics erstellen, also wie du bereits schreibst
sicher hier um eine String-Collection handelt also "Collection<String>"
musst du beim instantiieren den Generic festlegen.
bspw:
Java:
Set<String> m_config;
 
Liefert getPropertiesForCall eine Map?

Und ist diese auch mit Generics versehen?

Hallo zeja,
das ist ein guter Hinweis, also die Routine getPropertiesForCall gibt offiziell eine Map
aus, wobei es in Wirklichkeit eine Properties ist. Mit Map<String, String> bekomme ich einen auf die Finger, da Properties von Map<Object, Object> abgeleitet ist (vermute mal aus Kompatibilitätsgründen).
So nun habe ich mal diese Routine auch offiziell ein Properties-Object zurückgeben lassen und siehe da, die Meldug kommt nicht mehr.
Ist aber ne echt drollige Warnung, da sie irgendwie nicht sagt das der Casus-Knaktus an Map liegt. Stattdessen erzählt sie mir was von Collection (vermute mal weil toArray() aus der Collection-Klasse kommt.

In der Hoffnung dass ich nun keine Laufzeitprobleme mit der YAML-Implementation bekomme, die ich nutze...

Herzlichen Dank

Takidoso :)
 
Zurück