[解決済み] javaの@記号はどういう意味ですか?
質問
ドキュメンテーションのためのコメントでは意味がわかるのですが、それ以外ではどのような意味があるのでしょうか? (通常ならググるのですが、文字以外の記号はすべて結果に表示されます)
どのように解決するのですか?
その
@
記号は、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つのアノテーションはコンパイラによってチェックされます。
関連
-
[解決済み】Javaパッケージが存在しないエラー
-
[解決済み】Eclipseで「JUnitテストが見つかりませんでした。
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaBeanとは何ですか?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み】Javaではfinallyブロックは必ず実行されるのですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
-
[解決済み】なぜJavaの+=, -=, *=, /=複合代入演算子はキャスティングを必要としないのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Hibernateエラー:同じ識別子値を持つ別のオブジェクトがすでにセッションに関連付けられました。
-
[解決済み】Android Studioでタスク :app:compileDebugJavaWithJavac の実行に失敗しました。
-
[解決済み】宣言されたパッケージが期待されるパッケージと一致しない ""
-
[解決済み] hibernate のプロパティが見つかりません。
-
[解決済み】「java -cp」と「java -jar」の違い?
-
[解決済み】JLabelのテキストを中央に配置するには?
-
[解決済み】Eclipseで「JUnitテストが見つかりませんでした。
-
[解決済み】Ubuntu: OpenJDK 8 - パッケージを見つけることができません。
-
[解決済み】Java: GZIPInputStreamの作成に失敗しました。GZIP形式ではありません
-
[解決済み] javaの@マークについて [重複]。