在Groovy中读取资源时异常而不是null

时间:2016-12-01 13:42:36

标签: groovy resources

现在从资源文件中安全地获取text(适当的异常而不是NPE)我需要使用以下代码片段:

String resourceText(String resourcePath) {
    URL resource = this.getClass().getResource(resourcePath)
    if (!resource) {
        throw new IllegalArgumentException("No file at $resourcePath")
    }
    resource.text
}

是否有任何图书馆已经做到了这一点?看起来应始终以null安全的方式访问资源。

2 个答案:

答案 0 :(得分:1)

为避免NPE,您可以使用safe navigation operator,返回值将被计算为null:

String resourceText(String resourcePath) {
    URL resource = this.getClass().getResource(resourcePath)
    resource?.text
}

更好的选择是使用选项:

String resourceText(String resourcePath) {
    URL resource = this.getClass().getResource(resourcePath)
    Optional.ofNullable(resource).orElseThrow(() -> new IllegalArgumentException("No file at $resourcePath")).text
}

答案 1 :(得分:0)

我发现使用Guava的方法可以短得多:

String resourceText(String resourcePath) {
    Resources.getResource(this.class, resourcePath).text
}

来自Javadoc:

  

@throws IllegalArgumentException if the resource is not found