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

Java Android:使用未经检查或不安全的操作,java,android,unsafe,unchecked,Java,Android,Unsafe,Unchecked,在构建项目时,我收到了以下信息: …\listadapter\MyAdapter.java: 使用未经检查或不安全的操作 使用-Xlint重新编译:未选中以获取详细信息 以下代码行会发生这种情况: @Override protected void publishResults(CharSequence constraint, FilterResults results) { beanList = (ArrayList<Bean>) results.values

在构建项目时,我收到了以下信息:

…\listadapter\MyAdapter.java:

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

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

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

@Override
    protected void publishResults(CharSequence constraint, FilterResults results) {
        beanList = (ArrayList<Bean>) results.values;
        notifyDataSetChanged();
    }
@覆盖
受保护的void publishResults(CharSequence约束、FilterResults结果){
beanList=(ArrayList)results.values;
notifyDataSetChanged();
}

我不知道该怎么办。

您可以尝试使用try-catch方法捕获异常,也可以为此问题创建一个新的异常,为此您可以创建一个扩展异常的类,您可以在此处阅读更多信息:。

您可以尝试使用try-catch方法捕获异常,也可以为此问题创建新的异常,为此您可以创建一个扩展异常的类,您可以在此处阅读更多信息:。

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

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

注释这个方法,它总是一个Bean列表,应用程序工作得很好,但是当我编译时,我得到了这个警告。所以我添加了@SuppressWarnings(“unchecked”)。请尝试SuppressWarnings,而不是SuppressWarnings。这将教会我从SO答案复制和粘贴。它始终是Bean列表,应用程序工作得很好,但当我编译时,我得到了它。因此我添加了@SuppressWarnings(“未选中”)。请尝试SuppressWarnings,而不是SuppressWarnings。这将教会我从SO答案复制和粘贴。