在android中,为什么局部变量不是在ClickListener的最终工作声明?



在以下代码中,为什么未声明的局部变量在ClickListener中最终工作??没有final的局部变量在onCreate方法的末尾被销毁,所以它不应该在OnClickListener中被访问,对吗?但是,在下面的代码中,a的值显示在Toast中。我不明白为什么……

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String a = "a";
Button btnMinus = findViewById(R.id.btnMinus);
btnMinus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, a, Toast.LENGTH_SHORT).show();
}
});
}
}

因为实际上是final.

但是如果你加上

String a = "";
a = "a";

,其余代码保持不变,那么它将无法编译,因为它不再是有效的最终

最新更新