のみほーだい!

のみほーだい!TOP
のみほーだい! は、(株)トラストサービス ITソリューション事業部  が運営する、技術情報交流サイトです。

J2SE 5.0 codeName Tiger

2006/07/25
@author k.mori

■■ アノテーション(注釈)とは ■■

アノテーションは、Javaプログラムの中に補助的な情報を付加するための機能です。
メタデータとも呼ばれます。
標準アノテーション型は下記です。

①Override
②Deprecated
③SuppressWarnings


①▲▲Override▲▲
Override アノテーションは、メソッドにつけることのできるアノテーションです。
Override アノテーションは、メソッドがオーバーライドしていることを宣言します

  Class AnnoSample {
     public void a() {
   }
 }

  Class AnnoSample_B extends AnnoSample {
     @Override public void a() {
   }
 }

例えばオーバライドでない場合、
  メソッドはそのスーパークラスのメソッドをオーバーライドしません。 とエラーとなる
  // オーバーライドではなくオーバーロードとなる
  // @Overrideを使用したため、コンパイルエラーが出る

  @Override void a(float f) {
  }

②▲▲Deprecated ▲▲ 
Deprecatedアノテーションも、javacコンパイラがサポートするアノテーションの1つです。
古くて使用が推奨されないAPIに対してDeprecatedアノテーションを適用すると、
コンパイル時に警告を表示させることができます。

   Class AnnoSample {
     public void a() {
    }
  }
   Class AnnoSample_B extends AnnoSample {
      @Deprecated public void a() {
      }
  }
下記のようなエラーがでます。
$ javac Class AnnoSample_B.java
注: Class AnnoSample_B.java は推奨されない API を使用またはオーバーライドしています。
注: 詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてください。


③▲▲SuppressWarnings ▲▲
このアノテーションには、指定した警告メッセージの表示を抑制する働きがあります。

AnnoSample1.java:7: 警告:[unchecked] raw 型 java.util.List のメンバとしての add(E) への無検査呼び出しです。

1: import java.util.*;
2:
3: // 警告[unchecked]が表示される例
4: public class AnnoSample1 {
5:    public void a() {
6:      List list=new ArrayList();
7:      list.add("Hello");
8:      }
9:  }

③-1エラーを表示させないために方法
1: import java.util.*;
2:
3: // 警告[unchecked]の表示を抑制する例
4: public class AnnoSample2 {
5:   @SuppressWarnings("unchecked")
6:       public void a() {
7:       List list=new ArrayList();
8:       list.add("Hello");
9:       }
10: }

③-2エラーを表示させないために方法
●ジェネリックスを使ってプログラムを書き換えれば、警告は表示されない
List list=new ArrayList ();
list.add("Hello");