メソッドにfinalキーワードを使用できますか?
8 に答える
はい。
メソッドを最終的にすることができます
public class A {
public static final void f() {
System.out.println("test");
}
}
メソッドを最終的にする理由は通常2つあります
- メソッドが最終的な場合、インライン化される可能性があります。
- メソッドがfinalの場合、メソッドをオーバーライドすることはできません。
確かにできます。オーバーライドを不可能にします。
はい、final キーワードはメソッドに使用できます。不変性を保持します。メソッド間の破損を防ぎます。たとえば、クラス X のあるメソッドの実装で、メソッド M が特定の方法で動作することを前提としているとします。X または M を final として宣言すると、派生クラスが M を再定義して、X が正しく動作しない原因になることを防止できます。
他の回答へのメモとして。ファイナルを使用できます。実際には、それを使用している人をめったに見ませんが、その理由はわかりません。
私が最近書いているコードの多くはマルチスレッド環境を対象としており、スレッドセーフになるようにクラス final (値クラスの場合) を不変にする傾向があります。
一部のメソッドを final (他のメソッドではなく) としてマークすることの問題は、そのメソッドには何か特別なものがあり、他のメソッドには特別なものがないことを示していることです。私の経験では、それが実際に人々が意味することはめったにありません。
クラスが継承を意図している場合、望ましくない副作用を防ぐために、クラスをきれいに保ち、小さく保つ必要があります。これはすべて、自分自身とチームのためにコードを書いているのか、それともより広い対象者向けに書いているのか (つまり、オープン ソース プロジェクトや商用プロジェクトの公開 API) によって異なります。