0

私たちが持っているとしましょう:

final JList list = new JList(buffer.toArray()); 

JListをそのように宣言したいのですが、SQLクエリからバッファ変数を取得するため、tryループで。その中でtry/catchの外で宣言された変数を使用する方法はありますか?

4

3 に答える 3

2

繰り返しますが、他のスレッドで指摘したように、ループまたはブロックのに宣言してください。

于 2012-07-11T23:27:47.367 に答える
1

次のように、try ブロックの外側で変数を宣言します。

JList list = null;
try {
    list = new JList(buffer.toArray());
} catch (SomeNastyException eekwhatthebleepwentwrong) {
    // at least print some info about the exception
}
于 2012-07-11T23:31:00.980 に答える
0

これはあなたが求めているものかもしれないと思います:

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この理由で修飾子が必要ない場合は、それを取り除きます。それは問題を引き起こしているだけです。)

于 2012-07-11T23:32:42.353 に答える