少し混乱するコードに出くわしました。明確にしたいのは実際には2つのバリエーションです。
例 1:
public String getFilepath(){
final File file = new File(this.folder, this.filename);
return file.getAbsolutePath();
}
file
" "を宣言する目的は何final
ですか? Javaプリミティブは値で渡され、 をgetAbsolutePath()
返すだけなString
ので、変数はfinal
反対側(メソッドの呼び出し側)にはありませんよね? また、変数はこれら 2 行のスコープ内にしか存在しないため、キーワードfile
の目的がまったくわかりません。final
足りないものはありますか?これを行う理由がわかる人はいますか?
例 2:
public String getFilepath(){
final File file = new File(this.folder, this.filename);
return file;
}
ここでは実際のオブジェクトが返されているので...それはfile
変数がconstant/final
反対側になるということですか...? 意味がないようです。
一般に、アクセスタイプなしで変数を渡すように思えます。のように、private
関数内に変数public
を返す get 関数を使用できますが、関数を呼び出して変数を受け取る変数には、アクセス修飾子を指定する必要があります。したがって、 を指定するpublic
と、返される変数はpublic
そのスコープ内になります。を指定するprivate
と、返される変数はprivate
そのスコープ内になります。との違いはありfinal
ますか?変数の「恒常性」は渡すことができるものですか? 私がJavaについて知っていることを考えると、これはかなりありそうもないことだと思います。
final
または、ポイントを完全に見逃しており、上記のコードのキーワードには他の目的がありますか?
編集:
コードを書いた元の開発者に確認したところ、final
キーワードを入れただけだったとのことでした。彼は当初、このメソッドはもっと長くなると考えていたので、ファイル全体が一定に保たれるようにしたかったからです。彼はまた、一般的に変更すべきではない変数を として宣言しfinal
、原則として、原則として、以下の両方の回答で言及されていると述べました。したがって、標準的な理由で含まれている単純な追加のキーワードを読みすぎていたようです。みんな、ありがとう!