Непроверенный литой 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;

Я уверен, что на этот вопрос все равно ответили миллионы раз...

Другие вопросы по тегам