Android 为什么作用域对作为参数创建的类起作用?
在这里,在DatePickerDialog的参数中动态创建的类如何看到“dob”?当然它没有这样的作用域?在这种情况下,查看JLS可能有助于理解本地类是如何作用域的 下面是回答你问题的具体段落-- 直接由块(§14.2)包围的本地类的范围是直接包围块的其余部分,包括其自身的类声明。直接由开关块语句组(§14.11)包围的本地类的范围是直接包围开关块语句组的其余部分,包括它自己的类声明 编辑-- 认识到该解释具体指的是本地类本身的范围,而不是本地类中封闭成员的范围。这里有一个更好的链接-- 本地类具有以下有趣的特性: 与成员类一样,本地类与包含实例相关联,并且可以访问包含类的任何成员,包括私有成员 除了访问包含类定义的字段外,本地类还可以访问本地方法定义范围内并声明为final的任何本地变量、方法参数或异常参数。Android 为什么作用域对作为参数创建的类起作用?,android,scope,Android,Scope,在这里,在DatePickerDialog的参数中动态创建的类如何看到“dob”?当然它没有这样的作用域?在这种情况下,查看JLS可能有助于理解本地类是如何作用域的 下面是回答你问题的具体段落-- 直接由块(§14.2)包围的本地类的范围是直接包围块的其余部分,包括其自身的类声明。直接由开关块语句组(§14.11)包围的本地类的范围是直接包围开关块语句组的其余部分,包括它自己的类声明 编辑-- 认识到该解释具体指的是本地类本身的范围,而不是本地类中封闭成员的范围。这里有一个更好的链接-- 本
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;