我还在学习Java,但我不确定为什么会导致编译时错误:
public class AnswerRepository implements IAnswerRepository { private final static SQLiteDatabase database; public AnswerRepository(Activity activity) { if(database != null) { database = DbOpenHelper.getInstance(activity); } } }
我只是想在为其分配值之前检查是否先分配了最终变量.但似乎编译时检查不喜欢它.这是为什么?
final
变量只能初始化一次.通常,它们必须在构造函数中初始化,但如果它们是static
,则需要在定义它们时进行初始化,如下所示:
private final static SQLiteDatabase database = new SQLiteDatabase(...);
或者,您可以稍后将其初始化:
private static SQLiteDatabase database;
static
变量将在调用对象构造函数之前初始化.因此,在这种情况下,database
将始终是null
,因为它是null
,在对象构造函数中重新初始化将导致编译时错误.