ページ 11

異なるメソッドで定義されたインナー・クラス内で非 final 変数を参照する

Posted: 2013年3月01日(金) 17:54
by chin
現在、JAVAでタイトルのようなことをやりたいと考えています。
もちろん、JAVAではできないのですが、どうにかうまく実現することはできないでしょうか?
以下に実現したいコードを記述します。

よろしくお願いします。

コード:

class aaa {
	CheckBox[] cb = new CheckBox[4];
	boolean[]  bl = new boolean [4];
	
	void setter () {
		for (int i=0; i<cb.length; ++i) {
			cb[i].setOnClickListener( new View.OnClickListener() {

				@Override
				public void onClick(View v) {
					cb[i].setEnabled(bl[i]);
				}				
			});
		}
	}
}

Re: 異なるメソッドで定義されたインナー・クラス内で非 final 変数を参照する

Posted: 2013年3月02日(土) 17:16
by ISLe
匿名クラスではなくなりますけど。

コード:

class aaa {
	CheckBox[] cb = new CheckBox[4];
	boolean[]  bl = new boolean [4];

	void setter () {
		class _OnClickListener implements View.OnClickListener {
			int i;
			public _OnClickListener(int i) {
				this.i = i;
			}
			@Override
			public void onClick(View v) {
				cb[i].setEnabled(bl[i]);
			}
		}
		for (int i=0; i<cb.length; ++i) {
			cb[i].setOnClickListener(new _OnClickListener(i));
		}
	}
}

Re: 異なるメソッドで定義されたインナー・クラス内で非 final 変数を参照する

Posted: 2013年3月04日(月) 16:35
by chin
>ISLeさん
返信が遅れて申し訳ありませんでした。
まさにほしい回答でした。いつもご回答ありがとうございます。