簡體   English   中英

android中,為什么不是final聲明的Local變量在ClickListener中起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM