1

从 json 文件读取时,我想用 gson 执行此操作:

JsonReader reader = new JsonReader(new InputStreamReader(
                new FileInputStream(filename)));
JsonParser jsonParser = new JsonParser();
return jsonParser.parse(reader).getAsJsonObject();

我将在其他地方对返回的 JsonObject 做更多的事情。

我的问题是这是否可以,因为我从不关闭阅读器。

从JsonReader的gson API可以看出JsonReader实现了AutoClosable。这是否意味着 JsonReader 会自动关闭?如果是这样,它何时关闭以及如何关闭?

谢谢你。

4

1 回答 1

2

是的,你必须关闭你的阅读器。正如 shmosel 指出的那样,AutoClosable 可用于 Java 7 中引入的 try-with-resource 语句。

以下是调整代码的方法:

try(JsonReader reader = new JsonReader(new InputStreamReader(
    new FileInputStream(filename))))
{
  JsonParser jsonParser = new JsonParser();
  return jsonParser.parse(reader).getAsJsonObject();
}
于 2017-10-02T23:18:00.760 回答