Глядя на документацию Font#loadFont
я наткнулся на это замечание:Почему «loadFont» не закрывает поток ввода? Должен ли я закрыть его?
Этот метод не закрывает входной поток.
К сожалению, это не объяснено и не расширилось. Поэтому мой вопрос:
Возможные причины, по которым API не будет закрывать входной поток? Возможно, вы хотели бы повторно использовать поток? я в основном использовать этот метод, как это:
Font.loadFont(getClass().getResourceAsStream("path/to/font"), 13.0);
, чтобы убедиться, что шрифт доступен для моего приложения, так что я никогда не будет повторно использовать входной поток, и я не могу думать о причине я хотеть.
- Должен ли я сам закрыть входной поток? Должен ли я ожидать каких-либо проблем, если я не закрываю входной поток? В прошлом у меня были проблемы с загрузкой шрифта таким образом, где некоторые метки, настроенные с этим шрифтом, начали показывать квадраты, в то время как другие (на одной сцене!) Работали нормально. Может ли это быть связано с не закрытием входного потока?
Это хорошее эмпирическое правило, что вы не должны закрывать поток, который вы не открыли. В этом случае метод не открывает его, поэтому он не закрывает его. Например, нет причин, по которым вы не могли бы пройти в стандартном потоке ввода: если метод закрыл поток параметров, вы были бы набиты, если бы вам нужно было открыть что-то другое после. –
И нет, вы не должны закрывать его самостоятельно: используйте попытку с ресурсами. –
@ AndyTurner - использование try-with-resources эквивалентно его закрытию, просто синтаксическому сахару. Я имел в виду, должен ли я быть ответственным за его закрытие, или это законно открыть его и никогда не закрывать. – Itai