2013-07-29 40 views
1

只是想了解为什么:的Android SQLiteDatabase查询可能产生NPE

db = databaseHandler.getReadableDatabase(); 

    String[] columns = {ID, NAME, DIFFICULTY}; 
    Cursor cursor = db.query(TABLE_NAME, columns, null, null, null, null, DIFFICULTY); 

在上面的代码片段的大写变量显然是静态的决赛。 Android工作室告诉我

“此检查根据代码的数据流分析报告指定检查范围内始终为真或假的条件,并指出可能抛出RuntimeException的情况。检查还会报告Nullable/NotNull违反合约,可以配置支持合约的注解(默认@nullable/@NotNull将使用来自annotations.jar的注释)“

这对我来说很粗鲁。有人可以解释吗?

回答

1

该工具试图帮助您找到可能发生错误的地方。 在这种特殊情况下,它会抱怨您使用的每个地方null,并且无法证明这种用法是允许的。

但是,documentation显示null值确实允许用于这些参数,因此该工具正好是错误的。 此外,SQLiteDatabasequery方法是Android API的一部分,所以没有任何借口。考虑一下这个检查器中的错误。

+0

非常感谢,这就是我在想什么,但不想做一个noob级别的假设。 –

相关问题