在循环/try/catch java中使用外部变量



让我们假设我们有:

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值相同的局部final的"技巧"就足以处理它

(如果因为这个原因不需要final修饰符,就去掉它。它只会引起问题。)

最新更新