Ich habe einige Codes zu überprüfen, SMS-Daten übergeben, und es gibt eine Filterfunktion einen Vektor Guss verwenden, dass jetzt die Kompilierung Warnung verursacht:Wie behebe ich "Ungeprüfte Besetzung" bei Verwendung eines Vektors mit Objekt?
Unchecked cast: 'java.lang.Object' to 'java.util.Vector<xxx.Event>'
an diesem Ort:
values = (Vector<Event>) results.values;
^
required: Vector<Event>
found: Object
Das Codefragment ist wie folgt:
@Override
public Filter getFilter() {
return new Filter() {
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
if (results.count != 0) {
values = (Vector<Event>) results.values;
notifyDataSetChanged();
}
}
@Override
protected FilterResults performFiltering(CharSequence smsType) {
FilterResults results = new FilterResults();
Vector<Event> eventList = new Vector<>();
if (smsType.equals("ALL")) {
results.values = allEvents;
results.count = allEvents.size();
return results;
}
for (Event event : allEvents) {
if (event.getType().toString().equals(smsType)) {
eventList.add(event);
}
}
results.values = eventList;
results.count = eventList.size();
return results;
}
};
}
Ich habe bereits um an verschiedenen SO Lösungen gesucht, wie: this, this, this, this, this und this. Aber ich muss zugeben, sie haben nur mehr Verwirrung verursacht.
Zusätzlich gibt es einige Vorschläge, eine ArrayList anstelle einer Vector zu verwenden, aber diese Vektoren haben den Vorteil, synchronized
im Gegensatz zu ArrayLists zu sein. Ich habe keine Ahnung, ob das hier von Bedeutung ist.
Und kein, ich will nicht zu @SuppressWarnings
, sondern versuchen, das Problem sauber mit Java zu verstehen und zu lösen 8.
möglich duplizieren: http://stackoverflow.com/questions/14642985/type-safety-unchecked-cast-from-object-to-listmyobject –
@VeneetReddy Danke für das Hinzufügen zu der bereits lange Liste der Verwirrung! :) – not2qubit