5

メソッドにfinalキーワードを使用できますか?

4

8 に答える 8

2

はい。

メソッドを最終的にすることができます

public class A {
   public static final void f() {
      System.out.println("test");
   }
}

メソッドを最終的にする理由は通常2つあります

  1. メソッドが最終的な場合、インライン化される可能性があります。
  2. メソッドがfinalの場合、メソッドをオーバーライドすることはできません。
于 2009-08-29T14:30:02.660 に答える
1

確かにできます。オーバーライドを不可能にします。

于 2009-08-29T14:31:40.097 に答える
0

はい、final キーワードはメソッドに使用できます。不変性を保持します。メソッド間の破損を防ぎます。たとえば、クラス X のあるメソッドの実装で、メソッド M が特定の方法で動作することを前提としているとします。X または M を final として宣言すると、派生クラスが M を再定義して、X が正しく動作しない原因になることを防止できます。

于 2015-07-28T19:34:22.730 に答える
0

他の回答へのメモとして。ファイナルを使用できます。実際には、それを使用している人をめったに見ませんが、その理由はわかりません。

私が最近書いているコードの多くはマルチスレッド環境を対象としており、スレッドセーフになるようにクラス final (値クラスの場合) を不変にする傾向があります。

一部のメソッドを final (他のメソッドではなく) としてマークすることの問題は、そのメソッドには何か特別なものがあり、他のメソッドには特別なものがないことを示していることです。私の経験では、それが実際に人々が意味することはめったにありません。

クラスが継承を意図している場合、望ましくない副作用を防ぐために、クラスをきれいに保ち、小さく保つ必要があります。これはすべて、自分自身とチームのためにコードを書いているのか、それともより広い対象者向けに書いているのか (つまり、オープン ソース プロジェクトや商用プロジェクトの公開 API) によって異なります。

于 2009-08-29T15:17:15.110 に答える