Непроверенный литой prblem
У меня есть адаптер автозаполнения, но я получаю это предупреждение: непроверенное приведение: "java.lang.Object" к "java.util.ArrayList"
Это код для моего фильтра, где я его получаю:
private final Filter nameFilter = new Filter() {
@Override
public CharSequence convertResultToString(Object resultValue) {
return ((UserNameAndPic) resultValue).getUserName();
}
@Override
protected FilterResults performFiltering(CharSequence constraint) {
if (constraint != null) {
suggestions.clear();
for (UserNameAndPic people : tempItems) {
if (people.getUserName().toLowerCase().contains(constraint.toString().toLowerCase())) {
suggestions.add(people);
}
}
FilterResults filterResults = new FilterResults();
filterResults.values = suggestions;
filterResults.count = suggestions.size();
return filterResults;
} else {
return new FilterResults();
}
}
@Override
protected void publishResults(CharSequence constraint, Filter.FilterResults results) {
List<UserNameAndPic> filterList = (List<UserNameAndPic>) results.values;
if (results.count > 0) {
clear();
for (UserNameAndPic people : filterList) {
add(people);
notifyDataSetChanged();
}
}
}
};
у него проблема со строкой:
List<UserNameAndPic> filterList = (ArrayList<UserNameAndPic>) results.values;
Я знаю, что это всего лишь предупреждение, и я могу подавить его, но я хочу избежать кастинга и не подавить предупреждение. Кто-нибудь знает, что делать?
1 ответ
Компилятор не знает, является ли приведение, которое вы делаете, правильным и безопасным или нет.
Если вы не можете избежать кастинга (лучше всего избегать его, но вы не публикуете достаточно кода, чтобы помочь), тогда вы можете просто отключить предупреждение, например:
@SuppressWarnings("unchecked")
Вы можете сделать это на уровне метода или даже для самой переменной:
@SuppressWarnings("unchecked")
String v = (String) vToCast;
Я уверен, что на этот вопрос все равно ответили миллионы раз...