让我们嘲笑我们:
final JList list = new JList(buffer.toArray());
我想声明一个JList,但我从SQL查询中获取缓冲区变量,因此,在try循环中。有没有办法在其中使用在try / catch之外声明的变量?
答案 0 :(得分:2)
再次,如我在other thread中所述,在循环或阻止之前声明。
答案 1 :(得分:1)
通过在try块之外声明变量,如下所示:
JList list = null;
try {
list = new JList(buffer.toArray());
} catch (SomeNastyException eekwhatthebleepwentwrong) {
// at least print some info about the exception
}
答案 2 :(得分: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) {
....
}
}
或者如果try / catch / finally ... {/ p>,final
必须是最终的
JList list = null;
try {
...
list = new JList(buffer.toArray());
} finally {
if (list != null) {
....
}
}
final JList finalist = list;
final
这里只会略微复杂化,但创建一个与非决赛相同价值的本地决赛的“技巧”足以应对它。
(如果由于这个原因不需要final
修饰符,请删除它。这只会导致问题。)