關於java靜態方法裡只能呼叫靜態變數的思考
阿新 • • 發佈:2019-02-05
最近一段時間裡面寫了這樣一個類:
public class DBManager { private static MySqliteHelper helper; public static MySqliteHelper getHelper(Context context){ if (helper == null){ helper = new MySqliteHelper(context); } return helper; } public static void execSql(SQLiteDatabase db,String sql){ if(db != null){ if (sql != null && !"".equals(sql)){ db.execSQL(sql); } } } }
private static MySqliteHelper helper;
一開始上面這行程式碼我並沒有加static修飾,然後工具就報錯了。
下面仔細分析一下原因:靜態變數和靜態方法屬於整個類的共享,不管這個類有沒有例項化出物件均可以呼叫。
而非靜態變數的引用必須先初始化物件。
"".equals(sql)
另外,上面一行程式碼這樣寫可以避免空指標異常。