私たちが持っているとしましょう:
final JList list = new JList(buffer.toArray());
JListをそのように宣言したいのですが、SQLクエリからバッファ変数を取得するため、tryループで。その中でtry/catchの外で宣言された変数を使用する方法はありますか?
私たちが持っているとしましょう:
final JList list = new JList(buffer.toArray());
JListをそのように宣言したいのですが、SQLクエリからバッファ変数を取得するため、tryループで。その中でtry/catchの外で宣言された変数を使用する方法はありますか?
繰り返しますが、他のスレッドで指摘したように、ループまたはブロックの前に宣言してください。
次のように、try ブロックの外側で変数を宣言します。
JList list = null;
try {
list = new JList(buffer.toArray());
} catch (SomeNastyException eekwhatthebleepwentwrong) {
// at least print some info about the exception
}
これはあなたが求めているものかもしれないと思います:
JList list = null;
try {
...
list = new JList(buffer.toArray());
final JList finalist = list;
... instantiate anonymous class that refers to finalist
} finally {
if (list != null) {
....
}
}
またはfinal
、try/catch/finally の場合、外部で最終的にする必要がある場合...
JList list = null;
try {
...
list = new JList(buffer.toArray());
} finally {
if (list != null) {
....
}
}
final JList finalist = list;
ここfinal
では唯一のことで少し複雑になりますが、非最終値と同じ値を持つローカル最終値を作成する「トリック」で十分に対処できます。
(そして、final
この理由で修飾子が必要ない場合は、それを取り除きます。それは問題を引き起こしているだけです。)