以下の私のコードはこの警告を示しています:
ヌルポインターアクセス:変数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でなければならない理由がわかりません。変数をnullに初期化していることに気付きましたが(Eclipseがそうでない場合は別のエラーが発生するため、これを行うだけです)、whileループ内のリストに値を追加しています。それはもはやnullではないという意味ではありませんか?
密集していると申し訳ありませんが、ここでは何が悪いのかわかりません。多分私がvarialbleを初期化している方法で。よくわかりません。
ありがとう!