现在从资源文件中安全地获取text
(适当的异常而不是NPE)我需要使用以下代码片段:
String resourceText(String resourcePath) {
URL resource = this.getClass().getResource(resourcePath)
if (!resource) {
throw new IllegalArgumentException("No file at $resourcePath")
}
resource.text
}
是否有任何图书馆已经做到了这一点?看起来应始终以null
安全的方式访问资源。
答案 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