1. ホーム
  2. ジャワ

[解決済み] javaの@記号はどういう意味ですか?

2022-03-03 06:04:11

質問

ドキュメンテーションのためのコメントでは意味がわかるのですが、それ以外ではどのような意味があるのでしょうか? (通常ならググるのですが、文字以外の記号はすべて結果に表示されます)

どのように解決するのですか?

その @ 記号は、Javaアノテーションを表します。Javaアノテーションが行うことは、変数、メソッド、クラス、インターフェース、その他の言語要素に特別な属性を追加することです。(これはアノテーションを宣言するときに設定できます) アノテーションを何かに追加すると、プログラムの他の部分は、何かがアノテーションを持っているかどうかをチェックすることができます。そして、この情報を使って必要なことを行うことができる。

いくつか例を挙げてみましょう。

は、その @Override アノテーション

public class SuperClass {
    public void someInterestingMethod() {
        System.out.println("Superclass!");
    }
}

public class DerivedClass extends SuperClass {
    public void someInterestngMethod() {
        System.out.println("Derived class!");
    }
}

そして、こうすると

SuperClass sc = new DerivedClass();
sc.someInterestingMethod();

someInterestingMethod() の呼び出しは動的にディスパッチされる必要があります。 "Derived class!" ということですよね?さて 派生クラスのメソッドは 実はスペルを間違えていました だから DerivedClass という独立したメソッドを取得しました。 someInterestngMethod() とは全く関係なく、スーパークラスの someInterestingMethod() . そのため someInterestingMethod() はオーバーライドされなくなり、スーパークラスの実装が呼び出されます。

を使用します。 @Override キーワードは、これを支援するためのものです。これは、アノテーションされたメソッドが祖先クラスのメソッドのオーバーロードであることをコンパイラに知らせるためのものです。そうでない場合 (このタイプミスの場合など、あるいは SuperClass API が変更され、メソッド名が変更された場合)、コンパイルに失敗し、オーバーライドが壊れていることに注意を喚起します。

その @SuppressWarnings アノテーション

以下はメソッドです。

public void someMethod() {
    int i;
}

というコンパイラの警告が表示されます。 i は決して使用されません。そこで @SuppressWarnings をメソッドに追加して 抑制する 警告を表示します。

@SuppressWarnings("unused")
public void someMethod() {
    int i;
}

にはパラメータがあることに注意してください。 @SuppressWarnings アノテーションを使用します。いくつかのアノテーションにはパラメータがあり、javadocでそれらを探すことができます。しかし、パラメータを持たないアノテーションの場合は、わざわざ () メソッドと同じです。

また、独自のアノテーションを宣言し、リフレクションを使用してチェックすることもできます。上記2つのアノテーションはコンパイラによってチェックされます。