我在构建项目时收到此消息:
... \ listadapter \ MyAdapter.java:
使用未经检查或不安全的操作。
使用-Xlint重新编译:不检查详细信息。
以下代码行会发生这种情况:
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
beanList = (ArrayList<Bean>) results.values;
notifyDataSetChanged();
}
我不知道该怎么办。
答案 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")