我下面的代码显示了这个警告:
空指针访问:变量 civs 在此位置只能为空
public static List<String> getCivs(String game) {
List<String> civs = null;
System.err.printf("game: %s\n", game);
SQLiteDatabase db = godSimDBOpenHelper.getReadableDatabase();
String where = GAME_COLUMN + "= ?";
Cursor cursor = db.query(GAMES_TABLE, new String[] {CIV_COLUMN}, where, new String[] {game}, null, null, null);
while (cursor.moveToNext()) {
System.err.println("now here");
System.err.println(cursor.getString(0));
civs.add(cursor.getString(0)); //warning appears for this line
}
return civs;
}
果然,当我运行它时,它崩溃了。根据定义,我不明白为什么这必须为空。我意识到我正在将变量初始化为 null(我这样做只是因为如果我不这样做,Eclipse 会给我另一个错误),但是我正在将值添加到 while 循环内的列表中。这是否意味着它不再为空?
对不起,如果我很密集,但我只是看不出这里有什么问题。也许以我初始化变量的方式。只是不确定。
谢谢!