查看 Font#loadFont
的文档我看到了这句话:
This method does not close the input stream.
不幸的是,这没有得到解释或扩展。所以我的问题是:
API 不关闭输入流的可能原因有哪些?您可能想重新使用流吗? 我主要像这样使用这种方法:
Font.loadFont(getClass().getResourceAsStream("path/to/font"), 13.0);
为了确保字体可用于我的应用程序,所以我从不重复使用输入流,而且我真的想不出我想要这样做的原因。
- 我应该自己关闭输入流吗?如果我不关闭输入流,我会遇到什么问题吗? 过去我遇到过以这种方式加载字体的问题,一些配置了这种字体的标签开始显示正方形,而其他标签(在同一场景中!)保持正常工作。这可能与未关闭输入流有关吗?
最佳答案
每个涉及稀缺资源或外部资源(例如文件描述符或流)的 API 的文档都将明确由谁负责清理(在这种情况下,关闭流)。这有时被称为“所有权”。
在这种情况下,文档指出 loadFont
方法不取得流的所有权。因此它仍然属于你:关闭流是你的责任。
try-with-resources 语句是执行此操作的最佳方式。
关于java - 为什么 `loadFont` 不关闭输入流?我应该关闭它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38189680/