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

问题描述 投票:0回答:2

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

... \ listadapter \ MyAdapter.java:

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

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

对于这行代码,会发生这种情况:

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

我不知道该怎么做。

java android unsafe unchecked
2个回答
1
投票

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


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.