java - 未经检查的转换问题

标签 java android unchecked-cast

<分区>

我有一个自动完成适配器,但我收到此警告: 未经检查的转换:“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;

我知道这只是一个警告,我可以抑制它,但我想避免转换而不是抑制警告。 有谁知道该怎么做吗?

最佳答案

编译器不知道你所做的转换是否正确和安全。

如果您无法避免转换(最好的做法是避免它,但您没有发布足够的代码来提供帮助),那么您可以只抑制警告,如下所示:

@SuppressWarnings("unchecked")

您可以在方法级别,甚至是变量本身执行此操作:

@SuppressWarnings("unchecked")
String v = (String) vToCast;

我敢肯定这个问题已经被回答了数百万次......

关于java - 未经检查的转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41012361/

相关文章:

java - 如何处理作为参数获取的私有(private)类的对象

iphone - 适用于 Android 和 iPhone 的 OpenGL

Android创建半可调整大小的框

java - 为原始类型抛出不一致的 ClassCastException

java - 从通用类型到相同类型的未经检查的转换

java - 从Spring App(docker-compose)在Mongodb连接上获取 “Exception opening socket”

java - Kotlin - 等同于对象的 SomeClass.class?

java - 表格标题边框旧的uitable matlab

java - 不幸的是,(应用程序名称)已停止。 eclipse 显示 map