Android:使用未经检查或不安全的操作

Android: uses unchecked or unsafe operations

我在构建项目时收到此消息:

...\listadapter\MyAdapter.java:

uses unchecked or unsafe operations.

Recompile with -Xlint:unchecked for details.

这行代码会发生这种情况:

@Override
    protected void publishResults(CharSequence constraint, FilterResults results) {
        beanList = (ArrayList<Bean>) results.values;
        notifyDataSetChanged();
    }

我不知道该怎么办。

您可以尝试使用 try catch 方法捕获 Excepcion,或者您可以为此问题创建一个新的 Excepion,为此您可以创建一个扩展 Exception 的 class,您可以在此处阅读更多相关信息: How to creat a custom Exception.

那是因为你正在转换为泛型类型,而编译器不知道这种转换是否合法。如果您的 results.values 不是 ArrayList 的实例,则这行代码将失败并出现 ClastCastException。 但如果是,编译器将转换该值,但它无法检查泛型参数的类型,如果您的变量包含 ArrayList,其中包含字符串,您的代码行不会失败,但它会在另一个,您正在从列表中阅读的位置。 如果您 100% 确定它将是 Bean 的 ArrayList,您可以只抑制此警告(通过使用 @SuppressWarnings("unchecked")

注释该方法