猿问

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

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


...\listadapter\MyAdapter.java:


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


使用 -Xlint:unchecked 重新编译以获取详细信息。


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


@Override

    protected void publishResults(CharSequence constraint, FilterResults results) {

        beanList = (ArrayList<Bean>) results.values;

        notifyDataSetChanged();

    }

我不知道该怎么做。


BIG阳
浏览 252回答 2
2回答

繁花不似锦

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

智慧大石

您可以尝试使用捕获异常的 try catch 方法,或者您可以为这个问题创建一个新的异常,因为您可以创建一个扩展异常的类,您可以在此处阅读有关它的更多信息:如何创建自定义异常。
随时随地看视频慕课网APP

相关分类

Java
我要回答