Разница в производительности вряд ли будет иметь большое значение.
В первой версии будет действительная ссылка на объект File
до следующего вызова method
, но предыдущий объект будетвсе еще нужно собрать мусор после того, как его заменили.Во второй версии объект File
теряется, когда method
закончен, и его можно собирать мусором.
Таким образом, первая версия означает, что у вас всегда будет хотя бы один не подлежащий сбору объект File
, остающийся в памяти до тех пор, пока существует экземпляр ABC
.Это вряд ли будет большой проблемой, если только File
не потребляет немалый объем памяти (он содержит только путь и имя файла. Буферизация содержимого файла - это работа BufferedReader
), и вы продолжаетемножество ABC
экземпляров вокруг.
Что вас должно беспокоить, так это ясность кода.Общее правило заключается в том, что каждая переменная должна иметь наименьшую возможную область видимости.Когда может быть локальной переменной, тогда должно быть локальной переменной.Причина в том, что чем меньше область действия, тем меньше кода может повлиять на его значение, что облегчает отладку приложения.Когда вы сталкиваетесь с ошибкой, из-за которой file
неожиданно не имеет ожидаемого значения, вам нужно изучить только один метод, а не весь класс.