在try块中分配final变量

Bar*_*lom 8 java final try-catch

很短的问题:有更优雅的方法来做到这一点:

Object tmp;
try {
 tmp = somethingThatCanFail();
} catch (Fail f) {
 tmp = null;
}
final Object myObject = tmp;
// now I have a final myObject, which can be used in anonymous classes
Run Code Online (Sandbox Code Playgroud)

Joa*_*uer 12

您可以在自己的方法中提取值的创建:

final Object myObject = getObjectOrNull();

public Object getObjectOrNull() {
  try{
    return somethingThatCanFail();
  } catch (Fail f) {
    return null;
  }
}
Run Code Online (Sandbox Code Playgroud)

它更长,但根据你对"优雅"的定义,它可能更优雅.