final TextView dob = (TextView) findViewById(R.id.TextView_DOB);
DatePickerDialog dateDialog = new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
Time dateOfBirth = new Time();
dateOfBirth.set(dayofMonth, monthOfYear, year);
long dtDob = dateOfBirth.toMillis(true);
dob.setText(DateFormat("MMMM dd yyyy", dtDob));
Editor editor = mGameSettings.edit();
editor.putLong(GAME_PREFERENCES_DOB, dtDob);
editor.commit();
}
},0,0,0);
return dateDialog;
在这里,如何在DatePickerDialog参数内即时创建的类看到“dob”?当然它没有范围吗?
答案 0 :(得分:2)
在这种情况下查看JLS可能有助于理解本地类的作用域。
http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.3
以下是回答您问题的具体段落 -
由块(第14.2节)直接包含的本地类的范围是直接封闭块的其余部分,包括它自己的类声明。直接包含在其中的本地类的范围switch block语句组(第14.11节)是直接包含的switch block语句组的其余部分,包括它自己的类声明。
编辑 -
意识到该解释具体指的是本地类本身的范围,而不是本地类中封闭成员的范围。这是一个更好的链接 -
http://docstore.mik.ua/orelly/java-ent/jnut/ch03_11.htm
本地课程有以下有趣的功能:
与成员类一样,本地类与包含实例相关联,并且可以访问包含类的任何成员,包括私有成员。
除了访问包含类定义的字段之外,本地类还可以访问本地方法定义范围内并声明为final的任何局部变量,方法参数或异常参数。 < / p>