menuItems をメニューに追加する for ループがあります。各メニュー項目を追加した後、アクションリスナーを追加したいので、メニューをクリックすると、対応するインデックス項目が配列から読み込まれます。問題は、Java が匿名アクション リスナー クラスから arraylist.get(i) を呼び出すことを許可しないことです。i は反復ごとに増加するため、i を final にすることはできません。誰でも助けることができますか?乾杯
質問する
952 次
2 に答える
6
final
要素を匿名クラスの外部参照として抽出しないのはなぜですか?
for (int i = 0: i < list.size(); i++) {
final elem = list.get(i);
// now use it...
}
これは別の理由でより安全であることに注意してください。元のソリューションでは、リストに戻りますが、匿名クラスがコールバックごとに異なるオブジェクトを抽出できるように、リストが変更される可能性があります。このバリアントでfinal
は、実際のインスタンスへの参照が与えられます。
于 2012-12-13T17:11:37.687 に答える
0
ActionListener を public クラスとして実装し、必要なメニュー項目をそのコンストラクターに渡すことができます。
于 2012-12-13T17:14:25.193 に答える