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

时间:2019-02-27 20:34:18

标签: java android unsafe unchecked

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

  

... \ listadapter \ MyAdapter.java:

     

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

     

使用-Xlint重新编译:不检查详细信息。

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

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

我不知道该怎么办。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用try catch方法来捕获Excepcion,也可以针对此问题创建新的Excepion,为此,您可以创建扩展Exception的类,您可以在此处阅读有关它的更多信息:How to creat a custom Exception

答案 1 :(得分:1)

那是因为您要强制转换为泛型类型,并且编译器不知道此强制转换是否合法。如果您的results.values不是ArrayList的实例,则此行代码将失败,并显示ClastCastException。 但是如果是这样,编译器将强制转换该值,但它无法检查泛型参数的类型,并且如果您的变量中包含带有字符串的ArrayList,则您的代码行不会失败,但是它将在另一行代码中失败。 ,即您从列表中读取的位置。 如果您100%确信它将是Bean的ArrayList,则可以取消此警告(通过使用@SupressWarnings("unchecked")

注释该方法