[英]In android, why does Local variable which is not declared by final work at ClickListener?
在下面的代碼中,為什么未聲明為 final 的局部變量在 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();
}
});
}
}
因為它實際上是最終的。
但是如果你添加
String a = "";
a = "a";
並保持代碼的 rest 不變,然后它將無法編譯,因為它不再有效地最終。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.