【问题标题】:Android: uses unchecked or unsafe operationsAndroid:使用未经检查或不安全的操作
【发布时间】:2019-02-27 20:34:17
【问题描述】:

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

...\listadapter\MyAdapter.java:

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

使用 -Xlint 重新编译:详细信息未选中。

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

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

我不知道该怎么办。

【问题讨论】:

    标签: java android unsafe unchecked


    【解决方案1】:

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

    【讨论】:

    • 它始终是 bean 的列表,应用程序运行良好,但是当我编译时,我会感到好战。所以我添加了@SupressWarnings("unchecked")。
    • 尝试 SuppressWarnings,而不是 SupressWarnings。这将教我从 SO 答案中复制和粘贴。
    【解决方案2】:

    你可以尝试使用 try catch 方法来捕捉异常,或者你可以为这个问题创建一个新的异常,你可以创建一个扩展异常的类,你可以在这里阅读更多信息:How to creat a custom Exception

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      • 1970-01-01
      • 2019-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多