:リスナーからローカル最終変数にアクセスするにはnullが必要ですか?我々は、以下のいる
final
は
onClick
方法でアクセスすることはできませんされていない限り、
final TextView view = (TextView) layout.findViewById(R.id.some_view);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
view.setText(“blah”);
}
}
//など
view
。
このスニペットがメソッド内にある場合は、view
がヒープへの参照を保持するスタックに割り当てられます。したがって、メソッド呼び出しの最後にはview
が失われます。 onClick
が同じスコープにあるため、view
は引き続き表示されます。私の質問は:onClick
はいつでも呼び出すことができます。 final
とマークすると、リスナーの実行時にview
がnullにならないようにしますか?またはnullが必要かどうかチェックしていますか?それはなぜですか?
*最終としてそれをマークするには、リスナーが実行時にそのビューがnullではないだろうことを確認しますか?*もちろん... 'layout.findViewById(R.id.some_viewが)'まだヌル – Selvin
を返すことがありません@セルバン:しかし、私はリスナーでそれを呼び出すことはしません – Jim
finalはヌルチェックとは関係ありません... 'final Object name = null;'かなり有効です... 'layout.findViewById(R.id.some_view) ; '返されたnullは明らかに' view'がnullになる可能性があります – Selvin