Android 在SQLiteQueryBuilder类上应用内部联接时

Android 在SQLiteQueryBuilder类上应用内部联接时,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,为什么下面的代码被放置在静态块中 private static final SQLiteQueryBuilder sWeatherByLocationSettingQueryBuilder; //static block: static{ sWeatherByLocationSettingQueryBuilder = new SQLiteQueryBuilder(); //This is an inner join which looks like //weather

为什么下面的代码被放置在静态块中

private static final SQLiteQueryBuilder sWeatherByLocationSettingQueryBuilder;

//static block:
static{
    sWeatherByLocationSettingQueryBuilder = new SQLiteQueryBuilder();

    //This is an inner join which looks like
    //weather INNER JOIN location ON weather.location_id = location._id
    sWeatherByLocationSettingQueryBuilder.setTables(
            WeatherContract.WeatherEntry.TABLE_NAME + " INNER JOIN " +
                    WeatherContract.LocationEntry.TABLE_NAME +
                    " ON " + WeatherContract.WeatherEntry.TABLE_NAME +
                    "." + WeatherContract.WeatherEntry.COLUMN_LOC_KEY +
                    " = " + WeatherContract.LocationEntry.TABLE_NAME +
                    "." + WeatherContract.LocationEntry._ID);
}

这是
静态块
,在Java中被视为
静态构造函数
。它基本上用在你想做一件事的课堂上

例如,初始化
static
变量
sWeatherByLocationSettingQueryBuilder
。如果没有这个静态块,您应该从类外部初始化静态变量,这通常是不合适的


有关更多信息,您也可以查看此帖子:

不清楚您在问什么。你能为你的问题提供一些背景吗?