boolean pingOK = false;
try {
  pingOK = InetAddress.getByName(ip).isReachable(200);
} catch(IOException e) {
  pingOK = false;
}


这些代码可以从6行减少到1行吗?

如:

boolean pingOK = withNoException(InetAddress.getByName(ip).isReachable(200));


也许在Java 8之上有一些功能异常技巧?

还是在Java 7下有某种方法可以做到这一点?

最佳答案

您可以使自己的助手做到这一点:

static <T> T withNoException(Supplier<? extends T> supplier, T defaultValue) {
    try {
        return supplier.get();
    } catch (Exception e) {
        return defaultValue;
    }
}

...

boolean pingOK = withNoException(() -> InetAddress.getByName(ip).isReachable(200), false);

08-28 15:59