Я только что наткнулся на какой-то код, который меня немного смущает; Есть действительно 2 варианта, которые я хотел бы уточнить.
Пример 1:
public String getFilepath(){
final File file = new File(this.folder, this.filename);
return file.getAbsolutePath();
}
Какова цель объявления file
"final
"? Поскольку примитивы Java передаются по значению, а getAbsolutePath()
просто возвращает String
, переменная не будет final
с другой стороны (вызов метода), не так ли? И поскольку переменная file
существует только в пределах этих двух строк, я не вижу цели ключевого слова final
. Я что-то упускаю? Кто-нибудь видит причину сделать это?
Пример 2:
public String getFilepath(){
final File file = new File(this.folder, this.filename);
return file;
}
Так как здесь фактический объект возвращается ... Означает ли это, что переменная file
будет постоянной / final
на другой стороне ...? Кажется, это не имеет смысла.
В общем, мне кажется, что вы передаете переменную, без это тип доступа. Например, у меня может быть переменная private
в функции с функцией get public
, которая возвращает ее, но переменная, которая получает ее при вызове функции, должна указать модификатор доступа. Так что, если он указывает public
, возвращаемая переменная будет public
в этой области. Если он указывает private
, возвращаемая переменная будет private
в этой области. Есть ли разница с final
? Является ли «постоянство» переменной чем-то, что может быть передано? Это кажется мне невероятным, учитывая то, что я знаю о Java.
Или я упускаю суть целиком, и в приведенном выше коде есть какая-то другая цель ключевого слова final
? 1038 *
Edit:
Я сверился с первоначальным разработчиком, который написал код, и он сказал, что вводит только ключевое слово final
, потому что он изначально думал, что метод будет намного длиннее, и хотел убедиться, что файл остается постоянным на протяжении всего процесса. Он также сказал, что он обычно объявляет переменные, которые не должны быть изменены, как final
, как правило, по всем правилам и в некотором роде в принципе - точка, в которой оба ответа упомянуты ниже. Похоже, я слишком много читал в простом дополнительном ключевом слове, включенном по стандартным причинам Спасибо всем!